如何将此sql语句转换为laravel orm?
Posted
技术标签:
【中文标题】如何将此sql语句转换为laravel orm?【英文标题】:how can convert this sql statment to 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 中无效
【问题讨论】:
【参考方案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(*)'
看起来你的数据库服务器没有将它理解为一个列。以上是关于如何将此sql语句转换为laravel orm?的主要内容,如果未能解决你的问题,请参考以下文章
如何将此 SQL 转换为 Laravel Query Builder 查询?