如何在Eloquent ORM laravel中获取最后一个插入ID

时间:2015-01-10 07:12:19

标签: php laravel eloquent

我正在使用“Laravel中的Eloquent ORM”执行数据库操作。我只想在数据库中获取最后一个插入ID(不是最大id)。

我搜索了laravel Eloquent ORM中的最后一个插入ID,我得到了以下链接(Laravel, get last insert id using Eloquent),它引用了以下函数“$data->save()”获取最后一个插入ID。

但我需要得到

Model::create($data)”;

我的查询:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);

如何检索最后插入的ID?

11 个答案:

答案 0 :(得分:42)

就像文档说:Insert, update, delete

  

"您也可以使用create方法将新模型保存在单个模型中   线。 插入的模型实例将从中返回给您   方法即可。但是,在这样做之前,您需要指定a   模型上的可填充或保护属性,与所有Eloquent模型一样   防止大规模分配。

     

保存或创建使用自动递增ID的新模型后,   您可以通过访问对象的id属性来检索ID:"

$insertedId = $user->id;

所以在你的样本中:

$user = User::create($loginuserdata);
$insertedId = $user->id;

然后在table2上它将是

$input['table2_id'] = $insertedId;
table2::create($input);

答案 1 :(得分:21)

****对于Laravel ****

$user = new User();

$user->name = 'John';

$user->save();

//Getting Last inserted id

$insertedId = $user->id;

答案 2 :(得分:3)

$lastId = User::create($loginuserdata)->id;

答案 3 :(得分:3)

您可以将数据包装在insertGetId()方法中,如此

$id = DB::table('table')->insertGetId( $data );

在这种情况下,数组$ data看起来像这样

$data = [ 'field' => 'data' , 'field' => 'data' ];

如果你正在使用DBfaçade,你可以将lastInsertID()方法附加到你的查询中。

$lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();

答案 4 :(得分:2)

正如其他人所说,你可以使用

来检索id
$model->id;

但仅限于您使用标准命名约定才能发表雄辩。如果要为primaryKey列使用其他名称,例如:

class Users extends Model{
    $primaryKey = 'userid';
}

您可以通过调用

来检索上次插入的ID
$model->userid;

https://laravel.com/docs/master/eloquent#eloquent-model-conventions中有描述:人们可以找到:

  

Eloquent还会假设每个表都有一个主键列   命名id。您可以定义$ primaryKey属性来覆盖它   约定。

     

此外,Eloquent假设主键是递增的   整数值,这意味着默认情况下主键将是   自动转换为int。如果你想使用非递增或   一个非数字主键,您必须设置公共$ incrementing   模型上的属性为false。

答案 5 :(得分:2)

你可以这样做,

public function store(Request $request,ModelName $obj)
{
        $lastInsertedId = $obj->create($request->all())->id;

}

希望这会对你有所帮助。

答案 6 :(得分:0)

$user = (new user)->create($request->all()) ;

        \Session::flash('message', 'Thanks , Your record No (' .$user->id . ') has been Successfully added');

这是我的方法,我返回插入的对象,然后获取其id或任何其他属性..

容易..并且完整

答案 7 :(得分:0)

这段代码对我很有用: Laravel 5.3

data messages

用户页面/网站我致电$upstatus = User::create($status); return response()->json($upstatus);

答案 8 :(得分:0)

雄辩模型

$user = new Reports();        
$user->email= 'david@example.com';  
$user->save();
$lastInsertId = $user->id;

使用查询生成器

 $lastInsertId = DB::table('reports')->insertGetId(['email' => 'david@example.com']);

答案 9 :(得分:0)

这是我的尝试:

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

并使用$model_ins->id

答案 10 :(得分:0)

这是一种更轻松的方法,可用于您插入的所有方法:

DB::getPdo()->lastInsertId()