0

I want to get all messages for auth user in his inbox with name of people who send him messages.

I have query

    $user_id=Auth::id();
    $messages=Chat::with('user')
    ->where('user_id',$user_id)
    ->groupBy('friend_id')
    ->limit(10)
    ->get();

But Laravel won't me to get that and said:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mojaodeca.chats.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select * from chats where user_id = 1 group by friend_id limit 10)

nikola
  • 1
  • 1

2 Answers2

0

use this

 $user_id=Auth::id();
 $messages=Chat::with('user',function($q){
                     $q->groupBy('friend_id')
                  })
    ->where('user_id',$user_id)
    ->limit(10)
    ->get();
Shailendra Gupta
  • 1,054
  • 6
  • 15
0

Please check MySQL Handling of GROUP BY - Your select list must be in your aggregate functions.

$messages = Chat::select('user_id', DB::raw('COUNT(user_id) as count'))
            ->with('user')
            ->groupBy('friend_id')
            ->limit(10)
            ->get();
Gonras Karols
  • 1,150
  • 10
  • 30
  • SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mojaodeca.chats.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select `user_id`, COUNT(user_id) as count from `chats` group by `friend_id` limit 10) – nikola Oct 24 '18 at 17:37