Laravel: разбиение на страницы запроса в представлении MySQL Error 1140 Смешивание столбцов GROUP

Я пытаюсь сделать простую нумерацию запроса, который использует представление:

DB::table('vw_myview')->paginate(50)

И получите эту ошибку:

SQLSTATE [42000]: Синтаксическая ошибка или нарушение доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), …) без столбцов GROUP недопустимо, если отсутствует предложение GROUP BY (SQL: select считать (*) как агрегат из vw_myview)

Тем не менее, когда я вручную запускаю запрос, он работает просто отлично:

mysql> select count(*) as aggregate from vw_myview;
+-----------+
| aggregate |
+-----------+
|       776 |
+-----------+
1 row in set (0.20 sec)

После осмотра я обнаружил, что мне просто нужно добавить GROUP BY пункт (так же, как об ошибке говорит), и я попытался сделать это без удачи:

DB::table('vw_myview')->groupBy('column_on_view')->paginate(50)

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 ‘database_name.table_used_by_view.column_on_table’ отсутствует в GROUP BY (SQL: выберите количество (*) как агрегат из группы vw_myview по column_on_view)

Хорошо, давайте попробуем сгруппировать по столбцу в одной из таблиц, которые использует представление:

DB::table('vw_myview')->groupBy('table_used_by_view.column_on_table')->paginate(50)

SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «database_name.table_used_by_view.column_on_table» в «групповом операторе» (SQL: выбрать количество (*) в качестве агрегата из группы vw_myview по database_name.table_used_by_view.column_on_table)

Так почему же запрос работает, когда я запускаю его вручную, но не работает при запуске через Eloquent? Любая помощь будет принята с благодарностью.

1

Решение

Вы знаете, я думаю, что на вашем сервере Mysql включен sql_mode = ONLY_FULL_GROUP_BY … Можете ли вы проверить это … (из mysql … select @@ sql_mode; Если он установлен, выключите его … и попробуйте Ваш запрос снова … Я думаю, что он пройдет … Mysql 5.7xxx теперь включен по умолчанию …

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector