我有一个Laravel ORM查询,我将2-3关系连接在一起,如下所示:
$data = AccommodationRoom::with('accommodation.city',
'accommodation.accommodationFacilities', 'accommodation.gallery')
->whereHas('roomCapacityHistory', function ($query) use ($from_date, $to_date) {
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
})
->whereHas('accommodation', function ($query) use ($searchCity) {
$query->where('city_id', $searchCity);
})
->limit(10)->get();
return response()->json($data, 200);在房间模型上,我检查容量模型是否有日期,以及城市id是用户提供给酒店(住宿)的城市id。问题是,当我得到结果时,我会为每个房间重复获得酒店。对于一次搜索,我可能得到10个相同的酒店,所以我希望使住宿具有唯一性,并显示每个住宿的一个结果(房间)。
发布于 2019-05-28 15:53:14
您可以使用groupBy而不是distinct;因为您希望根据一列对结果进行分组,例如accommodation_id:
$data = AccommodationRoom::with('accommodation.city',
'accommodation.accommodationFacilities', 'accommodation.gallery')
->SELECT('accommodation_id')
->whereHas('roomCapacityHistory', function ($query) use ($from_date, $to_date) {
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
})
->whereHas('accommodation', function ($query) use ($searchCity) {
$query->where('city_id', $searchCity);
})
->groupBy('accommodation_id')->limit(10)->get();
return response()->json($data, 200);发布于 2019-05-28 09:00:32
尝试链接distinct method。
即:
$data = AccommodationRoom::with('accommodation.city',
'accommodation.accommodationFacilities', 'accommodation.gallery')
->whereHas('roomCapacityHistory', function ($query) use ($from_date, $to_date) {
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
})
->whereHas('accommodation', function ($query) use ($searchCity) {
$query->where('city_id', $searchCity);
})
->distinct('VALUE_FOR_HOTEL_HERE')->limit(10)->get();
return response()->json($data, 200);https://stackoverflow.com/questions/56331546
复制相似问题