2 回答

TA貢獻1757條經(jīng)驗 獲得超8個贊
firstOrCreate()正如您所期望的那樣,它只是一個由兩部分組成的函數(shù)first(),create()如果不存在則進行查找和回退。您可以在控制器中實現(xiàn)幾乎相同的邏輯,first()如果結果存在,則將消息附加到結果,并在創(chuàng)建時按原樣返回結果?;蛘?,您可以根據(jù)結果使用HTTP_OK或修改響應HTTP_CREATED。或兩者。
public function store(Request $request)
{
$attributes = [
'listing_id' => $request->input('listing_id'),
'user_id_from' => $request->input('user_id_from'),
'start_date' => $request->input('start_date'),
'end_date' => $request->input('end_date')
];
// return existing reservation if exists
$reservation = Reservation::where($attributes)->first();
if ($reservation !== null) {
// add explicit message here if you want
return response(json_encode($reservation), Response::HTTP_OK);
}
// else create a new one
$reservation = Reservation::create($attributes);
// reload model
$reservation = Reservation::find($reservation->id);
return response(json_encode($reservation), Response::HTTP_CREATED);
}

TA貢獻1860條經(jīng)驗 獲得超9個贊
我認為您正在尋找 Laravel 的wasRecentlyCreated:
if(! $reservation->wasRecentlyCreated){
// create & encode a JSON response or use this variable & method on the blade page
}
- 2 回答
- 0 關注
- 291 瀏覽
添加回答
舉報