Laravel 5.3: Select leftjion не работает с groupBy

#laravel #count #group-by

#laravel #подсчет #группировка по

Вопрос:

Я хотел бы подсчитать количество сообщений рядом со списком элементов всех категорий, как показано ниже:

  • Категория 1 (25)
  • Категория 2 (12)
  • Категория 3 (8)
  • Категория … (67)

В Laravel 5.2 я использую приведенный ниже код для достижения вышеуказанного результата:

 $cateCount = Category::leftjoin('posts', 'posts.icategoryid', '=', 'categories.id')
          ->groupBy('categories.id')
          ->get(['categories.id', 'categories.name', DB::raw('count(posts.icategoryid) as mycount')]);
  

Однако я обновился до Laravel 5.3, и он показывает ошибки ниже:

SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1055 ‘posts.categories.name ‘ отсутствует в GROUP BY (SQL: select categories . id , categories . name , count(posts.icategoryid) как mycount из categories левого соединения posts на posts . icategoryid = categories . id group by categories . id )

Не могли бы вы показать мне, как исправить это или какой-либо лучший способ достичь вышеуказанного результата?

Спасибо, Ваннак

Ответ №1:

Была аналогичная ошибка, в моем случае это было связано со строгим режимом MySQL, который был бы включен в 5.3:

https://mattstauffer.co/blog/strict-mode-and-other-mysql-customizations-in-laravel-5-2

 'connections' => [
    'mysql' => [
        // Behave like MySQL 5.6
        'strict' => false,

        // Behave like MySQL 5.7
        'strict' => true,
    ]
]