首页 > 解决方案 > 如何在 laravel 的数据透视表上应用 groupBy 关键字?

问题描述

我有users_logs一个有很多列的数据透视表,其中之一是event_date. 我想检索与特定用户关联的所有数据。我通过不能使用 groupBy() 关键字来完成它,因为它返回错误。

 $GameLogs = User::with(['gamelogs' => function ($query)
{
    $query->where('type', '=', 'play');
    $query->groupBy('event_date');
}])->find(request()->user()->id);

有人可以指导我如何解决这个问题。我将不胜感激。太感谢了。

错误是

SQLSTATE[42000]: Syntax error or access violation: 1055 'o*******_db.g***s.i`

标签: phplaravellaravel-5

解决方案


当您执行 agroupBy时,需要将所选字段聚合到strict mode

$GameLogs = User::with(['gamelogs' => function ($query)
    {
        $query->where('type', '=', 'play');
        $query->groupBy('event_date', 'user_id');
        $query->select('event_date', 'user_id');
    }])
    ->find(request()->user()->id);

推荐阅读