我有這部分代碼:
$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);
}
現在想回傳插入或更新的資料作為回應,但經過谷歌并看到很多帖子,所有嘗試都失敗了,我該怎么做?沒有最后插入的 id
但回傳布林值:
{
"message": "Seller updated successfully!",
"data": 1
}
如何在 Eloquent ORM laravel 中獲取最后一個插入 ID
大多數主題都想回傳,id但我想要所有資料。
uj5u.com熱心網友回復:
解決問題的關鍵是理解 3 種 Eloquent 方法。
create()- 回傳插入的模型實體。update()- 根據更新陳述句的成功回傳一個布林值(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);
}
uj5u.com熱心網友回復:
這是因為您正在使用更新方法的回應覆寫 var $sellers。而 update() 回傳一個布林值。因此,您不必將回傳值分配給 $seller 變數來代替更新。
要回傳更新的賣家模型,請在回應中使用 fresh() 方法。$seller->fresh().
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();
if ($seller){
Seller::where('tel', $request->tel)->update($input); //update
return response()->json([
'message' => 'Seller Updated successfully!',
'data'=> $seller->fresh()
], 200);
} else {
$seller = Seller::create($input); //create
return response()->json(['message' => 'Seller created successfully!', 'data'=> $seller], 200);
}
uj5u.com熱心網友回復:
你可以用新鮮的方法
$seller = Seller::where('tel', $request->tel)->update($input)->fresh()
這將從資料庫中選擇新集
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/380514.html
