Php 如何在雄辩的ORM laravel中获取最后一个插入id

Php 如何在雄辩的ORM laravel中获取最后一个插入id,php,laravel,eloquent,Php,Laravel,Eloquent,我正在用“Laravel中雄辩的ORM”执行数据库操作。我只想获取数据库中最后一个插入id(不是最大id) 我在laravel Eloquent ORM中搜索以获取最后一个插入id,我得到了以下链接(),该链接引用了从以下函数获取最后一个插入id“$data->save()” 但我需要得到 “Model::create($data)” 我的查询: GeneralSettingModel::create($GeneralData); User::create($loginuserdata);

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

我在laravel Eloquent ORM中搜索以获取最后一个插入id,我得到了以下链接(),该链接引用了从以下函数获取最后一个插入id“
$data->save()

但我需要得到

Model::create($data)

我的查询:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);
如何检索上次插入的id?

如文档所述:

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

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

因此,在您的示例中:

$user = User::create($loginuserdata);
$insertedId = $user->id;
那么在表2中,它将是

$input['table2_id'] = $insertedId;
table2::create($input);
****为了拉威尔****

$user = new User();

$user->name = 'John';

$user->save();

//Getting Last inserted id

$insertedId = $user->id;

正如其他人对我说的,你可以使用

$model->id;
但只有当您使用标准命名约定来表达雄辩时。如果要为primaryKey列使用其他名称,例如:

class Users extends Model{
    $primaryKey = 'userid';
}
您可以通过调用

$model->userid;
如中所述:可在其中找到:

Eloquent还将假定每个表都有一个主键列 命名id。您可以定义$primaryKey属性来覆盖此属性 惯例

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


您可以像这样在insertGetId()方法中包装数据

$id = DB::table('table')->insertGetId( $data );
$data = [ 'field' => 'data' , 'field' => 'data' ];
在本例中,$data数组看起来像这样

$id = DB::table('table')->insertGetId( $data );
$data = [ 'field' => 'data' , 'field' => 'data' ];
如果您使用的是DB façade,您可以将lastInsertID()方法附加到查询中

$lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();
你可以这样做

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

}
希望这对你有帮助

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

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

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

此代码适用于Laravel 5.3:

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

用户页面/站点我被调用
data.id

这是一个雄辩的模型:

$user = new Reports();        
$user->email= 'david@example.com';  
$user->save();
$lastInsertId = $user->id;
使用查询生成器的解决方案:

 $lastInsertId = DB::table('reports')->insertGetId(['email' => 'david@example.com']);
这是我的尝试:

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

并使用
$model_ins->id

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

DB::getPdo()->lastInsertId()

如果表有一个自动递增的id,则If
可能重复。请尝试以下操作:亲爱的@Krzysiek Grzembski我需要它在我的控制器中。我在模型中更改了它,正如您在模型中编写它一样。但是现在$model->userid;在可访问的地方。我需要它在我的控制器中。请引导…@Raham请查看我更新的answear。如果没有任何代码,很难判断您的问题是什么。事实上,我解决了我的问题。我的问题是如何从表中检索最后插入的一个。现在我查找您的答案,即如何返回最后插入的一个。您在其中定义了$model…问题是触发器生成的键$lastinserted=DB::table('users'))->insert(数组('email\u id'=>$email\u id,'name'=>$name))->lastInsertId();谢谢你的回答,但我解决了我的问题。是关于primaryKey的。我在模特儿里换了primarkey。所以我没有得到最后一个id。在将primarykey更改为id后,它成功了。感谢您的回复。值得注意的是,文档有误导性,因为显示的第一个方法是
->save()并没有足够解释
save()
返回一个布尔值,而只有Insert、update和delete返回实例。特别是因为in表示“保存或创建后”,所以值得注意的是,
insertGetId
仅在列实际命名为
id
时有效。