group by - subconsultas - ¿Se puede usar la función with con una cláusula GroupBy en Laravel Eloquent?
subconsultas eloquent laravel (1)
¿Se puede usar la función with con una cláusula GroupBy en Laravel Eloquent? ¿Sirve para algo si tengo elementos específicos para seleccionar usando la Cláusula Select?
La siguiente es la consulta que tengo actualmente
Order::with(''Campaign'')
->where(''isapproved'',''='',''Y'')
->groupBy(''campaign_id'')
->orderBy(DB::raw(''COUNT(id)'',''desc''))
->get(array(DB::raw(''COUNT(id) as totalsales'')));
La tabla de order
tiene un nombre de columna campaign_id
que belongsTo
la tabla llamada campaigns
. Me gustaría obtener el recuento total de las ventas de la tabla de pedidos en cada campaña y debo mostrarlo de la siguiente manera.
Total Sales Campaign
-------------------------
200 Campaign1
500 Campaign2
300 Campaign3
¿Debo realizar una selección específica o puedo acceder a los valores de la tabla Campaña desde la consulta anterior?
Si la columna referenciada requerida por el Modelo especificado en la función With se recupera en la cláusula SELECT
, entonces la consulta With
tiene en cuenta la función With
. La consulta rectificada será
$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 esta forma, la información de la campaña se puede recuperar usando
foreach($groupedSalesCampaign as $campaign)
{
Log::info($campaign->foo->bar);
}
Editado