我正在构建一个 Laravel API。我有一个名为 Reservations 的模型。我想避免用户为相同的产品和时间段创建两个预订。
我有以下几点:
$reservation = Reservation::firstOrCreate([
'listing_id' => $request->listing_id,
'user_id_from' => $request->user_id_from,
'start_date' => $request->start_date,
'end_date' => $request->end_date,
]);
return new ReservationResource($reservation);
文档说:
firstOrCreate 方法将尝试使用给定的列/值对定位数据库记录
上面的代码正在工作:
如果项目尚不存在,它会将项目添加到数据库中(在这种情况下,对 REST API 的回复返回正确的新模型实例。
如果组合等于 ,则不会将该项目添加到数据库中listing_id, user_id_from, start_date and end_date。
但是,在后一种情况下(项目已经存在),它也会在 REST API 中返回一个带有匹配行 ID 的保留。
示例:在下表中,已存在 ID 为 2 的预订:
id listing_id user_id_from start_date end_date
------------------------------------------------------
1 2 3 2019-09-12 2019-10-14
发送以下 REST API 请求:
{
"listing_id": 2,
"user_id_from": 3,
"start_date": "2019-09-12",
"end_date": "2019-10-14",
}
回报
"data": {
"id": 1,
"user_id_from": 3,
"listing_id": 2,
"price": 388,
"start_date": "2019-09-12",
"end_date": "2019-10-14",
}
我想要一个 JSON 回复,说明该项目已经存在。如何做到这一点?
陪伴而非守候
慕码人2483693