【发布时间】:2021-09-14 03:09:08
【问题描述】:
我尝试查询一个房间,那里有所有服务。
使用我当前的代码,我得到了 room,它至少具有数组中的一个 services,因为我使用的是whereIn。
$rooms = Room::select([
'rooms.id',
'rooms.available_from',
'rooms.available_till',
'rooms.description',
'rooms.room_type_id',
'room_types.name as room_types_name',
])
->leftJoin('room_types', 'room_types.id', 'rooms.room_type_id')
->with('services','reserved_rooms')
->when($request->services, function ($query) use ($request) {
$query->whereHas('services', function ($q) use ($request) {
$q->whereIn('id', $request->services);
});
})
->orderByDesc('id')
->get();
【问题讨论】:
-
确切的问题是什么?
-
我正在寻找替代查询的方法。现在我得到了至少有 1 项服务的房间(条件是 OR),但我需要是 AND。前任。如果我要寻找一个有电视和游泳池的房间,我应该找一个有两种服务的房间,而不仅仅是其中的一种。
-
我认为您应该对查询采取不同的方法,您可以将表+列添加到您的问题中吗?
标签: laravel eloquent laravel-7