laravel-eloquent-получить сумму соответствующей модели конкретного столбца
предполагая, что у меня в таблице
заказы
с полями
id, идентификатор пользователя, сумма, описание
и в таблице
пользователей
с различными полями
как, если я палочку, чтобы получить всех пользователей (со всеми его полями), а также сумму столбца "сумма" заказов, связанных с этим пользователем?
предполагая, что я есть:
пользователь: {id: 15, имя: Джим, фамилия: Моррисон, пол: мужчина}
и
заказ: {id: 1, userId: 15, количество: 10, Описание: "заказ xxx"},
заказ: {id: 3, userId: 15, сумма: 40, описание: "заказать yyy"}
Я хотел бы получить:
пользователь: {id: 15, имя: Джим, фамилия: Моррисон, пол: мужчина, orderAmount: 50}
конечно, я хотел бы избежать оператора foreach.
Я установил это на своей пользовательской модели
public function userOrder (){
return $this->hasMany('Order', 'userId');
}
и я попробовал это:
return $this->hasMany('Order', 'userId')->sum('amount');
без каких-либо удачи...
1 ответов
некоторые thaughts и, надеюсь, ответ на ваш вопрос:
Я бы переименовал таблицу пользователей для пользователей, чтобы придерживаться соглашений laravel. http://laravel.com/docs/4.2/eloquent#basic-usage
Я бы назвал метод в пользовательской модели orders
public function orders()
{
return $this->hasMany('Order', 'userId');
}
чтобы запросить пользователя, его заказы и сумма после этого его заказов сумма значений:
$userdata = User::with( 'orders' )->where( 'userId', 15 )->first();
$sum = $userdata[ 'orders' ]->sum( 'amount' );