Php 如何在雄辩的ORM laravel中获取最后一个插入id
我正在用“Laravel中雄辩的ORM”执行数据库操作。我只想获取数据库中最后一个插入id(不是最大id) 我在laravel Eloquent ORM中搜索以获取最后一个插入id,我得到了以下链接(),该链接引用了从以下函数获取最后一个插入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);
$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
时有效。