【发布时间】:2021-12-23 05:45:33
【问题描述】:
我有一张桌子,里面有酒店 ID 和设施 ID。当用户选择设施时,我只需要拉出拥有所有所选设施的酒店。截至目前,它让我拥有至少拥有一家的所有酒店。如何更改此构建器查询以处理它,使其不包括没有全部的酒店。
$builder = Hotels::query();
$builder->select('hotels.id','hotels'.'hotels_name')
$request_amenities = $request->amenities;
$builder->join('amenities_hotels', function ($join) use($request_amenities) {
$join->on('amenities_hotels.hotel_id', '=', 'hotel.id')
->whereIn('amenities_hotels.amenities_id', $request_amenities);
});
【问题讨论】:
-
在不知道
$builder是什么的情况下很难说。不过你可以看看whereHas -
builder 是查询构建器。开始像 $builder = Hotels::query(); $builder->select('hotels.id','hotels'.'hotels_name')
-
这会给你想要的结果吗?
$hotels = Hotel::select(['id','hotels_name'])->whereHas('amenities', function($query) use($request){return $query->whereIn('id', $request->amenities);})->get()?将此添加为评论,因为我不知道关系、表或列的相关名称。 -
我收到对未定义方法 App\Hotels::AmenitiesHotel() 的调用,这让我相信我需要在该模型中建立关系?
标签: laravel eloquent laravel-7