Как использовать отчетливый в отношениях запрос в Laravel - PullRequest
0 голосов
/ 27 мая 2019

У меня есть запрос 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);

На модели комнаты я проверяю, есть ли у модели вместимости дата и где идентификатор города - это то, что пользователь дает отелям (размещение). Проблема в том, что когда я получаю результат, я получаю повторные отели для каждой комнаты. За один поиск я могу получить десять отелей одинаково, поэтому я хочу сделать размещение уникальным и показать один результат (номер) на проживание.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Вы можете использовать groupBy вместо различных;потому что вы хотите сгруппировать свои результаты на основе одного столбца, например, размещения_ид:

$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);
0 голосов
/ 28 мая 2019

Попробуйте соединить отличный метод .

Т.е.:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...