我有这部分代码:
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();
if($seller){
$seller = Seller::where('tel', $request->tel)->update($input); //update
return response()->json(['message'=>'Seller Updated successfully!', 'data'=> $seller], 200);
} else {
$seller = Seller::create($input); //create
return response()->json(['message'=>'Seller created successfully!', 'data'=> $seller], 200);
}
现在想返回插入或更新的数据作为响应,但是google了很多帖子,都试过了,怎么办?没有最后插入的 id
但返回 bool 值:
{
"message": "Seller updated successfully!",
"data": 1
}
How to get last insert id in Eloquent ORM laravel
大多数主题都想返回 id
但我想要所有数据。
最佳答案
你的问题的关键是理解 3 Eloquent 方法。
create()
- 返回插入的模型实例。update()
- 根据更新语句的成功返回 bool 值(0 或 1)。refresh()
- 通过重新查询数据库来刷新模型实例。
在下面的完整示例中,您需要区别对待 create()
和 update()
,因为它们返回不同的东西。
对于 create()
你可以保持原样。但是 update()
需要修改为 不 重新分配 $seller
变量。
这将阻止任何错误,但它会返回旧 数据。为了返回新数据,您需要刷新模型(refresh()
)。
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();
if ($seller){
// DO NOT reassign since update() returns boolean
Seller::where('tel', $request->tel)->update($input); //update
$seller->refresh(); // Refresh it here
return response()->json(['message'=>'Seller Updated successfully!', 'data'=> $seller], 200);
} else {
// This one is good since create() returns newly created model.
$seller = Seller::create($input); //create
return response()->json(['message'=>'Seller created successfully!', 'data'=> $seller], 200);
}
关于php - Laravel 在插入/更新后获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70337073/