2016-11-18 6 views
1

Этот вопрос кажется таким глупым, но меня это раздражает.laravel OrderBy и сумма

---------------------------------------------------------------- 
| account_id | order_id | sales | profit | currency | date  | 
|---------------------------------------------------|----------- 
| 10  | 100 | 550 | 10 | USD  |2016-10-11| 
| 10  | 101 | 144 | 4  | NZD  |2016-10-12| 
| 9  | 102 | 429 | 44 | NZD  |2016-10-13| 
| 10  | 103 | 797 | 80 | NZD  |2016-10-14| 
---------------------------------------------------------------- 

Я хочу подвести прибыли по валюте

$account = App\Account::find(10); 

$collection = $account 
       ->orders()    # relation between order and account 
       ->completedLastMonth() # scope of dates, 
       ->groupBy('currency')  # group by currency 
       ->sum('profit')   # sum of profit 

но $collection является 94.

Так что я хочу привести что-то вроде этого

$collection = [ 
    'USD' => 10,  # total profit of USD 10 for account 10 
    'NZD' => 84  # total profit of NZD 80 + 4 = 84 for account 10 
] 

У меня есть логика отношения между учетной записью и ордерами и областью последнего месяца, пожалуйста, помогите мне за A ggregate SUM и GROUP BY

ответ

1
$account = App\Account::find(10); 
$collection = $account 
       ->orders()    # relation between order and account 
       ->completedLastMonth() # scope of dates, 
       ->groupBy('currency')  # group by currency 
       ->selectRaw('sum(profit) as sum, currency') 
       ->lists('sum','currency'); 
+0

Причины для скачивания будут оценены. –

+0

Мой вопрос не о 'completeLastMonth()' или 'orders()'. [Https://github.com/illuminate/database/blob/master/Eloquent/Builder.php#LC55](https://github.com/illuminate/database/blob/master/Eloquent/Builder.php#LC55) возврат из запроса. это не запрос. Мне нужна 'коллекция', а не' string' –

Смежные вопросы