我正在使用酒店预订系统,其中用户/管理员可以选择多个房间进行预订。
我在edit
功能上遇到了问题。我正在寻求有关如何实现此目的的帮助和建议。
我的模式。
房间:
room_number
price
reserved (Boolean)
maintenance (Boolean)
预订:
customer_id
checkin
checkout
预订房间
room_id
reservation_id
TotalPrice
查询房间范围:
public function scopeIsNotReserved($query)
{
return $query->where('reserved', false);
}
关系预订模型:
public function rooms()
{
return $this->belongsToMany(Room::class);
}
实际的问题是
在编辑预订时,我无法使用IsNotReserved query scope
,因为它不会将值传递给所选选项。
我想通过除此reservation_id
(请参阅$roomId
)之外所有未预留的房间。
我的控制器编辑功能如下:
$reservation = Reservation::findOrFail($id);
$customers = Customer::pluck('name', 'id')->toArray();
//当前不对此查询执行任何操作。
$roomId = $reservation->rooms()->pluck('rooms.id')->toArray();
获得所有房间
$rooms = Room::IsNotOnMaintenance()->get();
答案 0 :(得分:0)
好了,据我所知,您要使用范围,但要传递一个ID数组,您希望将其从查询结果中排除吗?如果是这样,我将发布该范围的示例:
public function scopeIsNotReserved($query, $exclusions)
{
return $query->where('reserved', false)->whereNotIn('id', $exclusions);
}