Получив ошибку sql в моем запросе, я думаю, что, возможно, неправильно сформирован мой построитель запросов, но не могу понять, что я делаю неправильно.
Alredy попытался протестировать мой запрос непосредственно в БД, и он работает, но при переводе с помощью построителя запросов это не работает.
$totalUserForCountry = DB::table('countries')
->select('countries.name', DB::raw('COUNT(users.country_id) as total'))
->join('users', 'users.country_id', '=', 'countries.id')
->groupBy('users.country_id')
->get();
Мой код ошибки:
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 «db.countries.name» отсутствует в GROUP BY (SQL: выберите countries
. name
, COUNT (users.country_id) как общее от countries
внутреннее объединение users
на users
. country_id
= countries
. id
сгруппировать по users
. country_id
)
Mysql-запрос напрямую к БД:
SELECT ct.name AS CountryName, COUNT(us.country_id) AS NumberOfUsers FROM countries AS ct
INNER JOIN users AS us
ON
us.country_id = ct.id
GROUP BY us.country_id;
PS Это работает, только если я отключаю «строгий» режим до false