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' );