Синтаксическая ошибка или нарушение прав доступа: 1055 «database.order.oid» отсутствует в GROUP BY - PullRequest
0 голосов
/ 28 августа 2018

Ниже мой sql-код, который работает правильно

SELECT oid, date(ordered_on) AS ord, count(date(ordered_on)) AS cnt
FROM order
GROUP BY ord DESC
LIMIT 10

Но когда я применяю его в laravel, я не могу оценить результат. Ниже код laravel

DB::table('order')
            ->select(DB::raw('oid, date(ordered_on) as ord, count(date(ordered_on)) as cnt'))
            ->groupBy('ord')
            ->orderBy('oid', 'desc')
            ->limit(10)
            ->get();

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Ваш необработанный запрос MySQL в идеале не должен работать, потому что он не имеет особого смысла. Я чувствую, что вы хотите получить количество записей по дате. Если это так, то вы хотите этот запрос:

SELECT DATE(ordered_on), COUNT(*) AS cnt
FROM `order`
GROUP BY DATE(ordered_on);

Это будет означать следующий код Laravel:

DB::table('order')
    ->select(DB::raw('DATE(ordered_on) AS ord, COUNT(*) AS cnt'))
        ->groupBy('ord')
        ->orderBy('ord', 'desc')
        ->limit(10)
        ->get();

Кстати, не называйте свои таблицы, столбцы и т. Д., Используя зарезервированные ключевые слова MySQL, например order. Мне нужно было уйти от order в моем запросе, и вам придется постоянно делать то же самое, продвигаясь вперед.

0 голосов
/ 28 августа 2018

Вы используете строгий режим в Laravel. Вы можете настроить его под свои нужды.

добрался до config/database.php в наборе strict=>false и все готово.

  'mysql' => [
          // ....

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