Laravel Eloquent - сумма значений столбца для нескольких записей из связанных данных. - PullRequest
0 голосов
/ 04 марта 2019

У меня есть следующие модели: User, Order, OrderPayment

, при этом у каждого пользователя много заказов, а у каждого заказа много платежей.

Модель orderPayment имеет атрибут total_paid.

Я хотел бы получить сумму, уплаченную пользователем за все его заказы.

Например: у пользователя 3 заказа.

  • первыйзаказ имеет две следующие записи об оплате: 5 $ и 4 $.

  • второй заказ имеет один платеж в размере 10 $

  • третий заказимеет две платежные записи 1 $ и 4 $

общая сумма, которую я хочу, составляет 5 + 4+ 10+ 1+ 4 = 24 $.

Я пыталсяследующее, но оно вообще не работает:

$user->orders->orderpayment->sum('total_paid');

но я получаю эту ошибку

Свойство [orderPayment] не существует в этом экземпляре коллекции

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Попробуйте:

$user->orders->orderpayment()->sum('total_paid');
0 голосов
/ 04 марта 2019

Поскольку вы хотите суммировать значения из модели OrderPayment, проще начать с нее.Попробуйте написать так:

OrderPayment::whereHas('order.user', function($query) use ($userId) {
    $query->whereId($userId);
})->sum('total_paid');

Убедитесь, что все отношения определены правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...