Query doesn't work inside Laravel
The Eloquent query:
$users = Message::join('users', function ($join) { $join->on('ch_messages.from_id', '=', 'users.id') ->orOn('ch_messages.to_id', '=', 'users.id'); }) ->where(function ($q) { $q->where('ch_messages.from_id', Auth::user()->id) ->orWhere('ch_messages.to_id', Auth::user()->id); }) ->where('users.id','!=',Auth::user()->id) ->select('users.*',DB::raw('MAX(ch_messages.created_at) max_created_at')) ->orderBy('max_created_at', 'desc') ->groupBy('users.id') ->paginate($request->per_page ?? $this->perPage);
users table:

ch_messages table:

I'm logged in with user of id 1. Error I get:
SQLSTATE[42000]: Syntax error or access violation: 1055 'chat.users.name' isn't in GROUP BY (SQL: select count(*) as aggregate from (select `users`.*, MAX(ch_messages.created_at) max_created_at from `ch_messages` inner join `users` on `ch_messages`.`from_id` = `users`.`id` or `ch_messages`.`to_id` = `users`.`id` where (`ch_messages`.`from_id` = 1 or `ch_messages`.`to_id` = 1) and `users`.`id` != 1 group by `users`.`id`) as `aggregate_table`)
If I run the query outside Laravel I get the response fine. The query:
select count(*) as aggregate from (select `users`.*, MAX(ch_messages.created_at) max_created_at from `ch_messages` inner join `users` on `ch_messages`.`from_id` = `users`.`id` or `ch_messages`.`to_id` = `users`.`id` where (`ch_messages`.`from_id` = 1 or `ch_messages`.`to_id` = 1) and `users`.`id` != 1 group by `users`.`id`) as `aggregate_table`
The response:

Where's the problem? How should I investigate this furthermore?
Please or to participate in this conversation.