sql >> Databasteknik >  >> RDS >> Mysql

Laravel - Hur genererar man på rätt sätt unika sniglar från artikeltitlar?

lastInsertId returnerar id:s per-anslutning, vilket betyder att samtidiga SQL-anslutningar inte kommer att störa varandra.

Men lastInsertId() är förmodligen inte den bästa metoden för vad du än gör. Jag ser att du redan använder Eloquent-modeller. När du skapar en ny post i tabellen returnerar dessa modeller motsvarande objekt, och sedan kan du få id för exakt det objektet utan förvirring.

$article = Article::create(['title' => 'First post', 'content' => '...']);
echo $article->id;

Detta kommer alltid att mata ut rätt artikel-id och du behöver inte oroa dig för implementeringsdetaljerna. Jag kan inte se en bra anledning att använda lastInsertId i ett modernt webbramverk, förutom kanske för ett fåtal kantfall.

Som en allmän regel, försök att undvika att ta itu med databasen direkt i din applikation och använd de abstraktioner som ramverket tillhandahåller - det kommer att göra din kod mycket mer underhållbar och enklare att förstå.

P.S. det kanske inte är viktigt för dig, men lastInsertId() fungerar inte med transaktioner.




  1. Vad är syftet med en IMPLICIT JOIN i sql?

  2. databasanslutning fungerar inte i jar, men fungerar i eclipse

  3. MySQL multipla kopplingar till samma tabell

  4. MYSQL-fråga mellan två tidsstämplar