【问题标题】:Laravel - Group By error on query that works on phpmyadmin with resultsLaravel - 在 phpmyadmin 上使用结果的查询分组错误
【发布时间】:2017-12-31 08:32:42
【问题描述】:

查询是:

$last_topics = Topics::orderby('date', 'DESC')->groupBy('section')->get();

还有错误:

等错误我们可以看到查询是:select * fromtopicsgroup bysectionorder bydatedesc

但是你可以看到 phpMyAdmin 中的相同查询效果很好,我得到了我的结果

那怎么了?

另外我可以说,在 Laravel 内部的这个查询中没有 groupBy 不会提示错误,例如:$last_topics = Topics::orderby('date', 'DESC')->get();

但正如我在 phpmyadmin 中所说,使用 groupby 的相同查询效果很好

【问题讨论】:

    标签: php mysql laravel phpmyadmin


    【解决方案1】:

    确定这是在数据库配置/config/database.php 中使用数据库的模式。 Laravel 不会将所有列添加到分组依据。

    'connections' => [
            'mysql' => [
                // Will work for you
                'strict' => false,
    
                // wont work for you
                'strict' => true,
            ]
        ]
    

    【讨论】:

    • 谢谢 :) 很好
    【解决方案2】:

    你可以在get之后调用groupBy

    Topics::orderby('date', 'DESC')->get()->groupBy('section');
    

    【讨论】:

    • 这行得通。谢谢 :)。但是为什么以前不行呢?
    • 因为调用get()方法后,会得到一个Collection的实例作为回报。然后在 Collection 上调用 groupBy 方法,而不是在 QueryBuilder 实例上调用。
    猜你喜欢
    • 2019-03-28
    • 2021-05-28
    • 2014-10-18
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多