【发布时间】:2022-01-17 01:38:00
【问题描述】:
我有这部分代码:
$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
但返回布尔值:
{
"message": "Seller updated successfully!",
"data": 1
}
How to get last insert id in Eloquent ORM laravel
大多数主题都想返回id,但我想要所有数据。
【问题讨论】:
-
您将
update和create视为相同,但它们不是 (laravel.com/docs/8.x/eloquent#inserts)。create根据需要返回新模型,但update根据更新成功返回布尔值。 -
在更新的情况下,你显然已经有一个
$seller,所以不要重新分配它 -
@BrianThompson 实际上没有。在更新的情况下,当卖家已经存在但没有确认自己的电话号码时,我们让其他人注册。
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first() -
我不确定在这个问题的上下文中这意味着什么。问题是您的回复说数据是
1,因为这就是update()在成功时返回的内容。如果您需要确保返回更新后的数据,那么在更新方法之后(不将其分配给$seller)您可以在返回之前调用$seller->fresh()。 -
我正在添加一个答案,以便我有更多解释空间。我认为您并未遵循所有必需的部分。