当我手动运行下面的SQL时,我得到了预期的结果,没有错误
select * from `crawl_results`
where `user_id` = 1 and `website_id` = 1
and `item_state` != 'OK' group by `destination_url`
limit 30 offset 0然而,当我雄辩地处理这件事时.
self::where('user_id', Auth::id())
->where('website_id', $scanID)
->where('item_state', '!=' , 'OK')
->groupby('destination_url')->paginate(30)它会产生以下错误:
SQLSTATE42000:语法错误或访问冲突: 1055 'link_checker.crawl_results.id‘不在
crawl_results组(SQL: select * fromcrawl_resultsuser_id=1和website_id=1,item_state!= OK组按destination_url限制30偏移量0)
不确定在抽象之后发生了什么来产生错误?
发布于 2019-05-05 12:41:37
将查询更改为查询生成器查询
DB::table('crawl_results')->where('user_id', Auth::id())->where('website_id', $scanID)->where('item_state', '!=' , 'OK')->groupby('destination_url')->paginate(30);它应该能正常工作。
在文档中,提到组BY不能在分页中有效地执行。
目前,使用groupBy语句的分页操作无法由Laravel有效执行。如果需要使用带有分页结果集的groupBy,建议您查询数据库并手动创建分页器。
发布于 2019-05-05 10:27:23
您应该转到config\database.php并将严格更改为false
'mysql' => [
...
'strict' => false,
...
]https://stackoverflow.com/questions/55990903
复制相似问题