как удалить дубликаты результатов объединения в laravel - PullRequest
0 голосов
/ 07 октября 2019

У меня есть запрос на присоединение, как показано ниже:

$direction = $descending ? 'DESC' : 'ASC';
$data = $query->join('accommodation_rooms', 'accommodations.id', '=', 'accommodation_rooms.accommodation_id')
    ->leftJoin('discounts', 'accommodation_rooms.id', '=', 'discounts.accommodation_room_id')
    ->select('accommodations.*', 'discounts.*')
    //            ->groupBy('name')
    ->orderBy('discounts.amount', 'desc');

return $data;

Теперь это принесет мне каждый отель столько же, сколько и их номера, поэтому, если в отеле 20 номеров, он возвращает один и тот же отель 20 раз, и когда яgroupby я получаю

Нарушение ограничения целостности: 1052 Имя столбца в выражении группы неоднозначно

, так как я могу удалить дубликаты отелей и показывать только 1 для каждой комнаты? также не хочу менять левое соединение, чтобы присоединиться. пожалуйста посоветуй. спасибо

1 Ответ

1 голос
/ 07 октября 2019

Вы должны указать, из какой таблицы идет столбец, в запросе на присоединение

->groupBy('accommodation_rooms.name')

или

->groupBy('discounts.name')

А чтобы избавиться от дубликатов, вы должны добавить distinctзаявление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...