我要冒险了,我想说,我认为这将需要某种形式的加入,但这是我的问题。
我有一个数据集,它当前正在按期间分组,然后检索这些期间中项目总数的计数。
P1-5,P2-3,P3-9等。
我在我想应用的同一数据集中有一个过滤器,但是,这个过滤器通过空的信息(显然数据不存在)过滤掉任何组,但是我仍然想把它算作0。
数据集2示例:
P1-6,P2-0,P3-6
这是group by当前的工作代码,用于在没有0个大小组的情况下获取计数:
Model::select('period',DB::raw('count(*) as amount'))
->groupBy('period')
->get();
我想补充这样一点:
->where('form', 'someformid')
我的猜测是需要->leftjoin('samemodelname',id=id),但我不确定。
如果比较容易的话,我可以转换SQL答案
您可以应用左联接并将where子句移动到该联接中
\App\Model::select(['period',DB::raw("count(*) as amount")])
->leftJoin(DB::raw("table2 as t2"), function ($join) {
$join->on('t2.id', '=', 'model.id');
$join->on(function ( $query ){
$query->whereNull('t2.id'); //this will make sure we also count the zero result of left join
$query->orWhere('t2.form',someformid');
});
})
->groupBy('period')
->get();
像这样的。 Rest您可以共享SQL查询