使用lumen/laravel在事务中插入的最后一个id

5m1hhzi4  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(750)

如何获取最后插入的id我使用以下代码:

DB::insert("INSERT INTO members (name,email)values($name,$email)");
$lastID = DB::getPdo() -> lastInsertId();

但是下面的代码没有给出最后插入的id。

DB::transaction(function () {
    $result = DB::insert("INSERT INTO members (name,email)values($name,$email)");
    $lastID = DB::getPdo() -> lastInsertId();
}, 5);
return $lastID;

即使在事务外部使用变量($lastid),它仍然不起作用。我做错什么了?

tcomlyy6

tcomlyy61#

请参阅下面的示例代码。希望有帮助。

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
}
u4dcyp6a

u4dcyp6a2#

如果你使用模型,技巧应该很简单。假设你 Member 模型。因此,当您尝试插入记录时,它将返回插入的记录作为响应。

/**Insert record**/
$member = Member::create(['name' => $name, 'email' => $email])

/**your last inserted id will be in $member**/
$lastInsertedId = $member->id

希望这对你有用。

nwnhqdif

nwnhqdif3#

使用查询生成器时,laravel具有 insertGetId 它插入行并返回新创建的 id .

$lastid = DB::table('members')->insertGetId(['name' => $name, 'email' => $email]);
ldioqlga

ldioqlga4#

您可以轻松获得:

$last_id = DB::table('members')->insertGetId(['name => $name, 'email => $email]);

相关问题