#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 bycategories
.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,
]
]