Laravel:SELECT列表的表达式#3不在GROUP BY中(查询多对多关系)

时间:2018-09-05 06:12:54

标签: laravel laravel-5 eloquent

我有一个带有“模型菜单”和“用户”的项目,它们之间具有多对多关系。

在一个站点上,我每个日历周显示过去的菜单,在另一个站点上,我希望每个日历周显示特定用户的订单历史记录。

我使用以下查询获得了菜单历史记录:

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
            let rootView = self.viewControllers![self.selectedIndex] as! UINavigationController
            rootView.popToRootViewController(animated: false)
     }

现在,我想到了针对User的相同查询,但是我收到的错误甚至不在我的陈述中。

public static function archives()
    {
        return  Menu::selectRaw('week(date, 1) as kw, year(date) as year')
                ->orderByRaw('min(date) asc')
                ->groupBy('kw', 'year')
                ->get();
    }

SELECT列表的表达式#3不在GROUP BY中

1 个答案:

答案 0 :(得分:1)

您的mysql设置为ONLY_FULL_GROUP_BY选项。

  

如果启用了ONLY_FULL_GROUP_BY SQL模式(通过   默认),MySQL拒绝选择列表为HAVING的查询   条件或ORDER BY列表指的是以下非聚集列   既不在GROUP BY子句中命名,也不在功能上依赖于   他们

https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html

但是在laravel中,您可以在config/database.php连接数组mysql严格模式下覆盖它

'mysql' => [
            ...
            'strict' => false,
            'engine' => null,
        ],