2 回答
TA贡献1757条经验 获得超8个赞
firstOrCreate()正如您所期望的那样,它只是一个由两部分组成的函数first(),create()如果不存在则进行查找和回退。您可以在控制器中实现几乎相同的逻辑,first()如果结果存在,则将消息附加到结果,并在创建时按原样返回结果。或者,您可以根据结果使用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条经验 获得超9个赞
我认为您正在寻找 Laravel 的wasRecentlyCreated:
if(! $reservation->wasRecentlyCreated){
// create & encode a JSON response or use this variable & method on the blade page
}
- 2 回答
- 0 关注
- 253 浏览
添加回答
举报