Соединить таблицу с несколькими столбцами groupBy с помощью счетчика в Laravel - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь сгруппировать таблицу joindraw по count, но получаю следующую ошибку.Как я могу получить количество и группу через несколько столбцов?

Контроллер

$joindraw_participants = Joindraw::where('product_id', $id)
                         ->groupBy('user_id', 'created_at')
                         ->with('user')->take(10)->desc()->get();

Ошибка

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055Выражение №1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец 'yangmao.joindraw.id', который функционально не зависит от столбцов в предложении GROUP BY;это несовместимо с sql_mode = only_full_group_by (SQL: выберите * из joindraw, где product_id = 1 группа по user_id, порядок по joindraw. created_at, ограничение по дес. 10)

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Поместите пустой массив режимов , чтобы перезаписать значение по умолчанию в вашем файле config / database.php .

'mysql' => [
  'modes' => [],
],
1 голос
/ 12 марта 2019

При строгом включении режима groupBy необходимо, чтобы все столбцы в списке выбора также были в groupBy.Чтобы удалить эту проверку, вы можете установить strict => false в config/database.php для mysql или указать режимы, чтобы другие режимы не затрагивались.Как это:

'modes' => [
    'STRICT_TRANS_TABLES',
    'NO_ZERO_IN_DATE',
    'NO_ZERO_DATE',
    'ERROR_FOR_DIVISION_BY_ZERO',
    'NO_AUTO_CREATE_USER',
    'NO_ENGINE_SUBSTITUTION'
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...