首页 文章

Laravel 5.3查询构建器对group by的访问违规

提问于
浏览
1

我已经使用Laravel 5一个星期了,现在我想要使用Query Builder转换所有现有的原始SQL查询,但我遇到了问题 .

当我运行以下查询时,我收到此错误消息

SQLSTATE [42000]:语法错误或访问冲突:1055'procedition.pp_proposals.title'不在GROUP BY中

$proposals = DB::table('tableA')
                ->join('tableB', 'tableA.id', '=', 'tableB.id')
                ->leftJoin('tableC', 'tableA.id', '=', 'tableC.id')
                ->select(DB::raw('tableA.id, title, date_created, date_completed, percent_complete, complete, COALESCE(COUNT(tableC.id), 0) AS total_ids'))
                ->where([
                    ['tableB.user', '=', Auth::user()->username],
                    ['submitted', '=', '0'],
                ])
                ->groupBy('tableA.id')
                ->orderBy('title', 'asc')
                ->get();

这是我的原始SQL完全正常,所以我不明白为什么我需要GROUP BY所有额外的列

SELECT tableA.id, 
        title,
        date_created,
        date_completed,
        percent_complete,
        complete,
        COALESCE(COUNT(tableC.id), 0) AS 'total_ids'
FROM tableA
    INNER JOIN tableB
        ON tableA.id = tableB.id
    LEFT JOIN tableC
        ON tableA.id = tableC.id
WHERE submitted = '0' AND tableB.user = 'user' 
GROUP BY tableA.id
ORDER by title ASC

1 回答

  • 3

    我不确定它是如何工作的,但你肯定可以通过将 config/database.php 文件上的 strict = false 设置为MySQL配置来解决这个问题!

    我有同样的问题,并将其设置为false解决我的问题!

    其实我刚刚在这里打开一个问题,找出它为什么会发生!

    如果您想关注:Strict database config Laravel 5.2 to Laravel 5.3

相关问题