Как я могу получить последний вставленный идентификатор Я использую следующий код, который работает:
DB::insert("INSERT INTO members (name,email)values($name,$email)");
$lastID = DB::getPdo() -> lastInsertId();Но следующий код не дает мне последний вставленный идентификатор.
DB::transaction(function () {
$result = DB::insert("INSERT INTO members (name,email)values($name,$email)");
$lastID = DB::getPdo() -> lastInsertId();
}, 5);
return $lastID;Даже когда я использую переменную ($ lastID) вне транзакции, она все равно не работает. Что я здесь делаю не так?






Получить его легко:
$last_id = DB::table('members')->insertGetId(['name => $name, 'email => $email]);
Уловка должна быть довольно простой, если вы используете Model. Предположим, у вас модель Member. Поэтому, когда вы пытаетесь вставить запись, он возвращает вставленную запись в ответ.
/** Insert record **/
$member = Member::create(['name' => $name, 'email' => $email])
/** your last inserted id will be in $member **/
$lastInsertedId = $member->id
Надеюсь, что это работает для вас.
См. Пример кода ниже. Надеюсь, поможет.
public function testModel($data) {
$id = DB::transaction(function() use ($data) {
$record_id = DB::table('users')->insertGetId($data);
DB::update('update users set votes = 100 where name = ?', ['John']);
return $record_id;
});
return $id; // this will return the last inserted id which is the $record_id inside the DB::transaction
}