我目前正在使用以下代码在表中插入数据:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
我想返回插入的最后一个ID,但我不知道如何获取它 .
亲切的问候!
24 回答
在 saving 数据库中记录后,您可以通过
$data->id
访问 id对于Laravel,如果插入新记录并调用
$data->save()
,则此函数执行INSERT查询并返回主键值(即默认为id) .您可以使用以下代码:
在laravel 5中:你可以这样做:
保存模型后,初始化的实例具有id:
对于那些也喜欢Jeffrey Way在他的Laracasts 5教程中使用
Model::create()
的人来说,他只需将Request直接发送到数据库而无需在控制器中明确设置每个字段,并使用模型的$fillable
进行质量分配(非常重要,对于任何新人来说)并且使用这种方式):我读了很多人使用insertGetId()
但不幸的是,这不尊重$fillable
白名单所以你在数据库中的字段,最终设置你要过滤的东西等等 . 这让我很失望,因为我想要尽可能使用质量分配和整体编写更少的代码 . 幸运的是Eloquent的create method只是包装了save方法(上面引用了@xdazz),所以你仍然可以拉出最后创建的ID ...Using Eloquent Model
Using Query Builder
这是一个例子:
对于在数据库中获取最后插入的ID您可以使用
这里$ lastInsertedId将为您提供最后插入的自动增量ID .
后
$data->id
将为您提供插入的ID,Note: 如果您的自动增量列名称为 sno ,则应使用
$data->sno
而不是$data->id
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:
参考:https://laravel.com/docs/5.1/queries#inserts
你可以这样做:
最短的方法可能是模型上的refresh()的调用:
使用
insertGetId
同时插入并插入id
从doc
到
Model
DB
有关详细信息:https://laravel.com/docs/5.5/queries#inserts
这在laravel 4.2中对我有用
在
save
之后,$data->id
应该是插入的最后一个id .有关更新的laravel版本,请尝试此操作
****对于Laravel ****
首先创建一个对象,然后为该对象设置属性值,然后保存对象记录,然后获取最后插入的id . 如
//现在获取最后插入的ID
Here is how we can get last inserted id in Laravel 4
Using Eloquent Model
Using Query Builder
有关在Laravel中获取上次插入行ID的更多方法:http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
xdazz在这种情况下是正确的,但是为了将来可能使用
DB::statement
或DB::insert
的访问者的利益,还有另一种方式:在Laravel 5.2中,我会尽可能地保持清洁:
保存后
$data->save()
. 所有数据都在$data
内推送 . 由于这是一个对象,当前行最近刚刚保存在$data
内 . 所以最后insertId
将在$data->id
内找到 .响应代码将是:
对于插入()