with函数可以与Laravel Eloquent中的Group By子句一起使用吗?

时间:2013-05-26 20:08:01

标签: group-by laravel laravel-4 eloquent

with函数可以与Laravel Eloquent中的GroupBy子句一起使用吗?如果我使用Select Clause选择特定项目,它是否可以用于任何目的?

以下是我目前的查询

Order::with('Campaign')
            ->where('isapproved','=','Y')
            ->groupBy('campaign_id')
            ->orderBy(DB::raw('COUNT(id)','desc'))
            ->get(array(DB::raw('COUNT(id) as totalsales')));

order表的列名为campaign_idbelongsTo表名为campaigns。我想从订单表中获取每个广告系列的销售总数,并且需要按以下方式显示。

Total Sales     Campaign
-------------------------
  200            Campaign1
  500            Campaign2
  300            Campaign3

我是否必须执行特定选择,还是可以从上述查询中访问Campaign表的值?

1 个答案:

答案 0 :(得分:7)

如果在SELECT子句中检索With函数上指定的Model所需的引用列,则上述查询将考虑With函数。经过纠正的查询将是

$groupedSalesCampaign = Order::with('Campaign')
            ->where('isapproved','=','Y')
            ->groupBy('campaign_id')
            ->orderBy(DB::raw('COUNT(id)','desc'))
            ->get(array(DB::raw('COUNT(id) as totalsales'),'campaign_id'));

这样可以使用

检索广告系列信息
foreach($groupedSalesCampaign as $campaign)
{
      Log::info($campaign->foo->bar);
}

编辑。