【问题标题】:Getting the id of inserted row in Laravel在 Laravel 中获取插入行的 id
【发布时间】:2018-05-26 23:38:14
【问题描述】:

这是我的代码:

User::create([
    'name' => $request->name,
    'email' => $request->email,
    'cell_phone' => $request->cell_phone,
    'province_id' => $request->province,
    'city_id' => $request->city,
    'job' => $job,
    'company' => $company,
    'member_num' => $member_num,
]);

如您所知,它会在数据库中插入一个新行。现在我需要获取插入行的id。我怎样才能得到它?


注意到我知道,I can do the same if I use $obj->save(), and the id will be $obj->id;。但是我想知道当我使用create() 时我该怎么做。

【问题讨论】:

  • $userDetials = User::create([ 'name' => $request->name, 'email' => $request->email, 'cell_phone' => $request->cell_phone, 'province_id' => $request->province, 'city_id' => $request->city, 'job' => $job, 'company' => $company, 'member_num' => $member_num, ]);
  • 你说的是哪个版本的 Laravel?

标签: php mysql laravel


【解决方案1】:

您可以使用代码获取用户插入的 id

$userDetials = User::create([
     'name' => $request->name,
     'email' => $request->email,
     'cell_phone' => $request->cell_phone,
     'province_id' => $request->province,
     'city_id' => $request->city,
     'job' => $job,
     'company' => $company,
     'member_num' => $member_num,
]);
if(isset($userDetials->id))    
{
    //if inserted 
    return $userDetials->id;
}
else
{
   //not inserted
}

create 方法返回保存的模型实例

【讨论】:

  • @stack 欢迎 :)
【解决方案2】:

As per the docs

create方法返回保存的模型实例:

在你的情况下是

$user = User::create(...)

【讨论】:

  • 我明白了,谢谢,点个赞。请您告诉我如何检查是否已成功插入?我的意思是它正确吗? if( isset($user->id) ){ /* row inserted */ }
  • @stack 你可以使用 if($user instance of User){...} 检查它是否 $user 是你的模型的实例
  • 无论save是否成功,它都会返回模型实例
  • @lagbox 那么你也可以使用 isset 和 if($user->id){...}
【解决方案3】:
$data = User::create([
      'name' => $request->name,
      'email' => $request->email,
      'cell_phone' => $request->cell_phone,
      'province_id' => $request->province,
      'city_id' => $request->city,
      'job' => $job,
      'company' => $company,
      'member_num' => $member_num,
]);

create 之后,$data->id 应该是最后插入的 id。

return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);

【讨论】:

    【解决方案4】:

    这里create 和save 两种方法都返回最后生成的ID,但请确保您使该字段自动递增。

    $userobj = User::create([
    'name' => $request->name,
    'email' => $request->email,
    'cell_phone' => $request->cell_phone,
    'province_id' => $request->province,
    'city_id' => $request->city,
    'job' => $job,
    'company' => $company,
    'member_num' => $member_num,
    ]);
    echo $userobj->id;
    

    如果你想使用 create 方法,你必须在你的模型中将所有字段定义为可填充,并且 save() 方法用于创建和编辑,所以使用 save 方法的习惯是好的,

    保存方法示例

     $user = User::first();
     $user->email = 'updated@domain.com';
     $user->save();
    echo $user->id;
    

    这两种方法都返回最后插入的 id。 我希望它有帮助, 谢谢...

    【讨论】:

    • 欢迎您,谢谢 :)
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2016-10-24
    • 2016-06-01
    • 1970-01-01
    • 2016-09-01
    • 2019-05-11
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多