7 votes

La fonction with peut-elle être utilisée avec une clause GroupBy dans Laravel Eloquent ?

La fonction with peut-elle être utilisée avec une clause GroupBy dans Laravel Eloquent ? A-t-elle une utilité si j'ai des éléments spécifiques à sélectionner à l'aide de la clause Select ?

Voici la requête que j'ai actuellement

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

Le site order a un nom de colonne campaign_id dont belongsTo la table nommée campaigns . Je voudrais obtenir le nombre total de ventes de la table des commandes pour chaque campagne et j'ai besoin de l'afficher de la manière suivante.

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

Dois-je effectuer une sélection spécifique ou puis-je accéder aux valeurs de la table Campagne à partir de la requête ci-dessus ?

7voto

Abishek R Srikaanth Points 2485

Si la colonne référencée requise par le modèle spécifié sur la fonction With est récupérée dans le fichier SELECT la clause With est prise en compte par la requête ci-dessus. La requête rectifiée sera

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

De cette façon, les informations sur la campagne peuvent être récupérées à l'aide de la fonction

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

Édité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X