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_id
,belongsTo
表名为campaigns
。我想从订单表中获取每个广告系列的销售总数,并且需要按以下方式显示。
Total Sales Campaign
-------------------------
200 Campaign1
500 Campaign2
300 Campaign3
我是否必须执行特定选择,还是可以从上述查询中访问Campaign表的值?
答案 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);
}
编辑。