【问题标题】:how can convert this sql statment to laravel orm?如何将此sql语句转换为laravel orm?
【发布时间】:2014-05-09 10:17:31
【问题描述】:
SELECT book_id, COUNT(*)
FROM book
GROUP BY book_id
ORDER BY COUNT(*) DESC

如何将此 sql 语句转换为 Laravel ORM?

编辑:

此 sql 语句在 MYSQL 中有效,但在 int laravel 中无效

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    这可能会起作用:

    $result = Book::select(array('book_id', DB::raw('COUNT(*) as count')))
                ->groupBy('book_id')
                ->orderBy(DB::raw('COUNT(*)'), 'desc')
                ->get();
    

    要测试/调试您的查询,请在其前面添加:

    DB::listen(function($sql, $bindings, $time) {
        var_dump($sql);
        var_dump($bindings);
    });
    

    或者发送到日志:

    DB::listen(function($sql, $bindings, $time) {
        var_dump($sql);
        var_dump($bindings);
    });
    

    此代码会将构建的查询绘制到您的浏览器页面中,如下所示:

    DB::listen(function($sql, $bindings, $time) {
        Log::info($sql);
        Log::info($bindings);
    });
    

    然后查看您的日志:

    php artisan tail
    

    【讨论】:

    • 这个可以转成ORM吗?
    • 这是 Eloquent ORM。
    • 我现在尝试使用它,但显示此错误“找不到列:1054 未知列 'COUNT(*)'”
    • 我刚刚为 Laravel 4 编辑了它,并添加了一种调试方法。我最后还使用 users 表测试了该查询,它运行良好。
    • 问题是,你的数据库服务器可以通过count(*)订购吗?您之前是否在数据库服务器中运行过该查询?这个错误Column not found: 1054 Unknown column 'COUNT(*)' 看起来你的数据库服务器没有将它理解为一个列。
    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 2017-03-09
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多