Выбрать все столбцы, но отличаться от таблицы базы данных в Laravel - PullRequest
0 голосов
/ 10 мая 2018

Сильфонная команда SQL работает отлично:

select * from `product` group by `owner_name` order by `id` asc 

Когда я перевожу код выше в моем проекте Laravel, чтобы получить тот же результат:

Product::select('*')
        ->orderBy('id','asc')->groupBy('owner_name')
         ->get();

Этот код Laravel возвращает мне ошибку,

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055 'db1.product.id' отсутствует в GROUP BY (SQL: выберите * из product группы по owner_name заказ по id по возрастанию

Проблема в том, что у меня много дублированных записей с небольшими различиями в некоторых их столбцах. Мне нужно получить их по owner_name и только один раз.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вам не нужно делать 'select (*)', по умолчанию он выберет все данные столбцов.

Попробуйте это:

Product::orderBy('id','asc')->groupBy('owner_name')
     ->get();

А если вы хотите получить выбранный столбец, вы можете сделать это так:

Product::select(['column_1', 'column_2'])
    ->orderBy('id','asc')->groupBy('owner_name')
     ->get();
0 голосов
/ 10 мая 2018

Редактирование файла конфигурации базы данных ваших приложений config/database.php

В массиве mysql установите strict => false, чтобы отключить строгий режим MySQL

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