Laravel组违反

时间:2018-10-24 16:57:52

标签: php mysql laravel

我想在身份验证用户的收件箱中获取发送给他的消息的所有人的姓名。

我有疑问

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

但是Laravel不会让我说:

  

SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'mojaodeca.chats.id',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容(SQL:从chats中选择*,其中user_id = 1组,friend_id限制10)

2 个答案:

答案 0 :(得分:0)

使用此

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

答案 1 :(得分:0)

请检查MySQL Handling of GROUP BY-您的选择列表必须在您的汇总函数中。

$messages = Chat::select('user_id', DB::raw('COUNT(user_id) as count'))
            ->with('user')
            ->groupBy('friend_id')
            ->limit(10)
            ->get();