Есть две таблицы/модели. В одной я храню список заказов, в другой список контрагентов и их комиссию.
1) orders
id| agent_id | item | cash
1 | 1 | - | 200
2 | 2 | - | 300
3 | 2 | - | 1000
2) agents
id | comission
1 | 15
2 | 20
Сумму заказов, сгруппированную по агентам без учета комиссии я могу получить,
1 | 170
2 | 1040
а как, получить общую сумму заказов? (1210?)
Через запрос? в модели? контроллере? Репозитории? что-то опять всего наплодил...
Иными словами мне нужно получить общую сумму умножения двух столбцов из разных таблиц...
UPD. что-то вроде... SELECT sum(a.cash*b.comission) FROM orders as a JOIN agents as b ON a.agent_id=b.id
в модели. Если через виджет какой-то выводится инфа, то в нем. Про лару не в курсе, м.б. там есть подсчет у генератора таблиц значений столбца. В Yii2 такое точно есть, и тут поидее должно быть.
AlikDex: public function forUserSumTotal2(User $user) {
return DB::table('agents')
->join('orders', 'orders.agent_id', '=', 'agents.id')
->select(DB::raw('sum((100-agents.comission)/100*orders.cash) AS total_sum'))
AlikDex: столбик на столбик то я могу) а вот просуммировать это все... только ручками... а я теперь пыжусь laravel way.. полгода сделал перерыв после своих потуг прошлым летом. Все уложилось и теперь пишется гораздо быстрее.
dk-web: Джойны не лучший вариант. К тому же, с использованием raw запросов. А вдруг будет надобность использовать другую БД (не mysql?)
Почему бы не получить эти значения в коллекцию, пройтись методом lists (взяв только нужную колонку), а потом просуммировать?