【发布时间】:2014-07-13 15:18:07
【问题描述】:
我有三个表,一个定义了另外两个之间的多对多关系。
表:集合
表:collection_question
表格:问题
我正在运行此查询以返回集合的问题数
$results = DB::table('collections')
->select(array(
DB::raw('count(collection_question.question_id) as question_count'),
'name',
'description'
))->leftJoin(
'collection_question',
'collections.id',
'=',
'collection_question.collection_id'
)->where('question_count', '>', 1)
->orderBy('question_count', 'asc')
->get();
这很好用,因为查询生成器不会篡改选择查询。
当我将get() 换成count() 时,查询生成器将我的select 子句替换为select count(*) as aggregate,这是可以理解的,但是我在此过程中松开了与question_count 的绑定,并引发了SQL 异常。
我查看了Illuminate\Database\Query\Builder 的源代码以尝试找到解决方案,但除了使用自定义count(*) 以及我的其他选择子句手动执行原始查询之外,我有点不知所措。
谁能找到解决办法?
【问题讨论】:
标签: php mysql laravel laravel-4