7

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 表的值?

4

1 回答 1

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);
}

已编辑。

于 2013-05-27T18:13:57.550 回答