【发布时间】:2018-07-25 04:05:06
【问题描述】:
我不想相信 laravel 5.5 中存在错误,因为当我在查询中使用 groupBy 时,我总是在 Eloquent Query Builder 上遇到错误,这让我很惊讶。
尝试将这个可以无缝工作的 SQL 转换为 Eloquent,但我在 groupBy 上不断收到错误。
我在这里抱怨的 SQL 有一个类似的问题,直到现在我还没有得到一个完美的答案 open issue here
SELECT * FROM arm_articles
INNER JOIN arm_interest ON arm_articles.article_category = arm_interest.category_id
WHERE arm_articles.article_contributor_id='1322'
GROUP BY arm_articles.article_id
返回错误的雄辩版本
$contributor_id =1322;
DB::table('arm_articles')
->join('arm_interest', function($join) {
$join->on('arm_articles.article_category','=','arm_interest.category_id');
})
->having('arm_articles.article_contributor_id', '=', $contributor_id)
->groupBy('arm_articles.article_id')->get()
错误信息
SQLSTATE[42000]: Syntax error or access violation: 1055 'knowledge_db.arm_articles.id' isn't in GROUP BY (SQL: select * from 'arm_articles' inner join 'arm_interest' on 'arm_articles'.'article_category' = 'arm_interest'.'category_id' group by 'arm_articles'.'article_id' having 'arm_articles'.'article_contributor_id' = 1322)
就像我说的那样,b4 它真的很糟糕,为什么我会首先收到错误,因为在查询中添加 ->toSql 会返回正确的 SQL。
【问题讨论】:
标签: php laravel group-by eloquent