繁体   English   中英

如何在 Laravel 的数据库中插入最后一个 ID?

[英]How to get last id inserted on a database in Laravel?

我正在尝试获取我的表的最后一个 ID,我希望它知道我的计数器的下一个数字是多少并将其显示给用户,我已经尝试使用last()方法但是我得到了这个:

>>> $trans = Transferencia::last()
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::last()'

还有其他方法可以知道吗?

在 Laravel 中获取最后插入的 Id 的 4 种方法:

使用insertGetId()方法:

$id = DB::table('users')->insertGetId(
[ 'name' => 'first' ]
);

使用lastInsertId()方法:

DB::table('users')->insert([
  'name' => 'TestName'
]);
$id = DB::getPdo()->lastInsertId();

使用create()方法:

$data = User::create(['name'=>'first']);
$data->id; // Get data id

使用save()方法:

$data = new User;
$data->name = 'Test';
$data->save();
dd($data->id);

您可以使用LAST_INSERT_ID()函数。 试试这个:

SELECT LAST_INSERT_ID() INTO yourTableName;

保存后,$data->id 应该是最后插入的。

return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
>>> $data = DB::select('SELECT id FROM transferencia ORDER BY id DESC LIMIT 1');

非易失存储器

您可以使用以下代码:

$data['password']= md5($request->password);
    
   $customer_id= DB::table('customer')
            ->insertGetId($data);
    echo $customer_id;

正如我理解的那样,您想知道下一次插入时将使用哪个 id。 如果表中有AUTO_INCREMENT主键,您可以使用查询获取该键的下一个值:

SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = "TABLE_NAME"

但是不建议在插入之前向用户显示他的 ID,因为它可以从其他用户的会话中更改。

这可能是最佳答案:

$trans = Transferencia::orderBy('id', 'desc')->take(1)->first();

并使用$trans->id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM