如何在雄辩的ORM拉拉维尔中获取最后一个插入ID


How to get last insert id in Eloquent ORM laravel

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

我搜索了在 laravel 雄辩 ORM 中获取最后一个插入 id,我得到了以下链接(Laravel,使用口才获取最后一个插入 id),指的是从以下函数"$data->save()"获取最后一个插入 id。

但我需要得到

" Model::create($data) ";

我的查询:

GeneralSettingModel::create($GeneralData);
User::create($loginuserdata);

如何检索上次插入的 ID?

就像文档说的那样:插入、更新、删除

"您也可以使用创建方法将新模型保存在单个模型中 线。插入的模型实例将从 方法。但是,在执行此操作之前,您需要指定 模型上的可填充或受保护属性,与所有雄辩模型一样 防止批量分配。

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

$insertedId = $user->id;

所以在你的样本中:

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

然后在表2上它将是

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

> **** For Laravel ****

$user = new User();
$user->name = 'John';
$user->save();
//Getting Last inserted id
$insertedId = $user->id;
你可以像

这样将数据包装在insertGetId()方法中

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

在这种情况下,数组$data如下所示

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

如果您使用的是数据库外观,则可以将lastInsertID()方法附加到查询中。

$lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();
$lastId = User::create($loginuserdata)->id;

正如其他人所说,您可以使用以下命令检索id

$model->id;

但前提是您对雄辩使用标准命名约定。如果要对主键列使用其他名称,例如:

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。

你可以

这样做,

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

希望这对您有所帮助。

这是我

的尝试:

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

并使用$model_ins->id.

这是一个雄辩的模型:

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

使用查询生成器的解决方案:

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

这段代码适用于Laravel 5.3:

$upstatus = User::create($status);
return response()->json($upstatus);

我称之为data.id的用户页面/网站

$user = (new user)->create($request->all()) ;
        'Session::flash('message', 'Thanks , Your record No (' .$user->id . ') has been Successfully added');

这是我的解决方案。我返回插入的对象并获取其 ID 或任何其他属性。

这是一种更简单的方法,适用于您插入的所有方式:

DB::getPdo()->lastInsertId()