7

with関数をLaravel EloquentのGroupBy句で使用できますか? Select句を使用して選択する特定の項目がある場合、それは何らかの目的に役立ちますか?

以下は、私が現在持っているクエリです

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があります。各キャンペーンに対する注文テーブルから売上の合計数を取得したいと考えており、次の方法で表示する必要があります。belongsTocampaigns

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

特定の選択を実行する必要がありますか、または上記のクエリから Campaign テーブルの値にアクセスできますか?

4

1 に答える 1

7

With 関数で指定されたモデルに必要な参照列がSELECT句で取得される場合、その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 に答える