2 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
firstOrCreate()正如您所期望的那樣,它只是一個(gè)由兩部分組成的函數(shù)first(),create()如果不存在則進(jìn)行查找和回退。您可以在控制器中實(shí)現(xiàn)幾乎相同的邏輯,first()如果結(jié)果存在,則將消息附加到結(jié)果,并在創(chuàng)建時(shí)按原樣返回結(jié)果?;蛘撸梢愿鶕?jù)結(jié)果使用HTTP_OK或修改響應(yīng)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貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為您正在尋找 Laravel 的wasRecentlyCreated:
if(! $reservation->wasRecentlyCreated){
// create & encode a JSON response or use this variable & method on the blade page
}
- 2 回答
- 0 關(guān)注
- 281 瀏覽
添加回答
舉報(bào)