使用编辑方法的多房间酒店预订系统的Laravel查询范围

时间:2018-10-10 07:52:34

标签: laravel laravel-5 eloquent query-builder laravel-query-builder

我正在使用酒店预订系统,其中用户/管理员可以选择多个房间进行预订。

我在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();

1 个答案:

答案 0 :(得分:0)

好了,据我所知,您要使用范围,但要传递一个ID数组,您希望将其从查询结果中排除吗?如果是这样,我将发布该范围的示例:

public function scopeIsNotReserved($query, $exclusions)
{
    return $query->where('reserved', false)->whereNotIn('id', $exclusions);
}