首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel的关系查询中使用distinct

如何在Laravel的关系查询中使用distinct
EN

Stack Overflow用户
提问于 2019-05-28 03:30:22
回答 2查看 200关注 0票数 0

我有一个Laravel ORM查询,我将2-3关系连接在一起,如下所示:

代码语言:javascript
复制
$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个相同的酒店,所以我希望使住宿具有唯一性,并显示每个住宿的一个结果(房间)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-28 15:53:14

您可以使用groupBy而不是distinct;因为您希望根据一列对结果进行分组,例如accommodation_id:

代码语言:javascript
复制
$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);
票数 1
EN

Stack Overflow用户

发布于 2019-05-28 09:00:32

尝试链接distinct method

即:

代码语言:javascript
复制
$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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56331546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档