Я хочу SUM строк в таблице MySQL, а затем объединить и обновить. Я пытаюсь суммировать все повторяющиеся платежи за день. Я опубликую свой существующий запрос, но есть некоторые ограничения.
Пример:
+----+------------+-------------+-------------+---------+
| id | date | merchant_id | investor_id | payment |
+----+------------+-------------+-------------+---------+
| 1 | 27/05/1989 | 4 | 7 | 1000 |
| 2 | 27/05/1989 | 4 | 7 | 1200 |
| 3 | 28/05/1989 | 4 | 7 | 1500 |
| 4 | 28/05/1989 | 4 | 7 | 1000 |
| 5 | 28/05/1989 | 5 | 8 | 1000 |
+----+------------+-------------+-------------+---------+
Ожидаемый результат:
+----+------------+-------------+-------------+---------+
| id | date | merchant_id | investor_id | payment |
+----+------------+-------------+-------------+---------+
| 1 | 27/05/1989 | 4 | 7 | 2200 |
| 3 | 28/05/1989 | 4 | 7 | 2500 |
| 5 | 28/05/1989 | 5 | 8 | 1000 |
+----+------------+-------------+-------------+---------+
Я пробовал этот цикл.
foreach ($existing_payments as $key => $payment)
{
ParticipentPayment::where('payment_date',$payment->payment_date) ->update(['payment' => \DB::raw("payment+$payment->payment"]);
}
Проблема 1. Я могу обновлять только один столбец за раз.
Проблема 2. Я программно перебираю строки и обновляю значение, из-за чего, если нет повторяющегося значения, строка не обновляется. Я должен написать еще один запрос для обновления. Удалить существующий запрос также.
Задача 3. Хорошо работает только для двух платежей.
Есть ли какое-нибудь возможное решение в laravel eloquent слияние (с суммой) нескольких строк и обновление?