首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel雄辩的GroupBy抛出SQL错误

问Laravel雄辩的GroupBy抛出SQL错误
EN

Stack Overflow用户
提问于 2019-05-05 10:12:37
回答 2查看 196关注 0票数 0

当我手动运行下面的SQL时,我得到了预期的结果,没有错误

代码语言:javascript
复制
select * from `crawl_results` 
    where `user_id` = 1 and `website_id` = 1 
    and `item_state` != 'OK' group by `destination_url` 
    limit 30 offset 0

然而,当我雄辩地处理这件事时.

代码语言:javascript
复制
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 * from crawl_results user_id =1和website_id =1,item_state != OK组按destination_url限制30偏移量0)

不确定在抽象之后发生了什么来产生错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-05 12:41:37

将查询更改为查询生成器查询

代码语言:javascript
复制
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,建议您查询数据库并手动创建分页器。

票数 1
EN

Stack Overflow用户

发布于 2019-05-05 10:27:23

您应该转到config\database.php并将严格更改为false

代码语言:javascript
复制
'mysql' => [
   ...
   'strict' => false,
   ...
 ]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55990903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档