2013-05-26 5 views
6

with 기능을 Laravel Eloquent의 GroupBy 절과 함께 사용할 수 있습니까? Select Clause를 사용하여 특정 항목을 선택하면 어떤 용도로 사용됩니까? 다음with 기능을 Laravel Eloquent의 GroupBy 절과 함께 사용할 수 있습니까?

나는 현재

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

ordercampaigns라는 테이블을 belongsTo 열 이름 campaign_id을했다가 그 쿼리입니다. 각 캠페인에 대한 주문 테이블의 판매 총 수를 얻고 싶습니다. 다음과 같이 표시해야합니다.

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

나는 특정 선택을 수행해야 하는가 아니면 위의 쿼리에서 캠페인 테이블의 값을 액세스 할 수 있습니까?

답변

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

편집을 사용하여 검색 할 수있는이 방법이 될 것입니다.