2013-05-26 11 views
6

Czy można użyć funkcji with z klauzulą ​​GroupBy w Laravel Eonquent? Czy ma to jakiś cel, jeśli mam konkretne przedmioty do wyboru przy użyciu Wybierz klauzulę?Czy funkcja with może być używana z klauzulą ​​GroupBy w Laravel Eonquent?

Poniżej kwerenda że obecnie mam

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

tabela order ma nazwę kolumny campaign_id który belongsTo tabelę o nazwie campaigns. Chciałbym uzyskać całkowitą liczbę sprzedaży z tabeli zamówień dla każdej kampanii i wyświetlić ją w następujący sposób.

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

Czy powinienem wykonać konkretny wybór lub czy mogę uzyskać dostęp do wartości tabeli Kampanii z powyższego zapytania?

Odpowiedz

7

Jeśli odwołanie do kolumny wymagane przez model określony w funkcji With jest pobierane w klauzuli SELECT, wówczas funkcja With jest brana pod uwagę w powyższym zapytaniu. Wyprostowane zapytanie będzie

$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')); 

ten sposób informacji o kampanii można pobrać za pomocą

foreach($groupedSalesCampaign as $campaign) 
{ 
     Log::info($campaign->foo->bar); 
} 

obróbce.

Powiązane problemy