2014-11-02 5 views
5

при условии, что у меня есть таблицаLaravel - красноречивый - получить сумму связанной модели конкретного столбца

заказы

с полями

идентификатор, USERID, сумма, описание

и таблица

пользователь

с различными полями

, как если бы я палочкой, чтобы получить все пользователь (со всеми полями), а также сумму в колонке «сумма» заказы, связанных с, что пользователь?

при условии, что у меня есть:

пользователя: {ID: 15, Firstname: джим, LastName: Morrison, пол: мужской}

и

порядок: { id: 1, userId: 15, количество: 10, описание: «order xxx»},

заказ: {id: 3, userId: 15, amount: 40, description: "order yyy"}

Я хотел бы получить:

пользователя: {ID: 15, ПгвЬЫате: джим, LastName: Моррисон, пол: мужской, orderAmount: 50}

я, конечно, хотел бы избежать утверждения foreach.

Я выставиться это на моей модели пользователя

public function userOrder(){ 
    return $this->hasMany('Order', 'userId'); 
} 

И я судимое это:

return $this->hasMany('Order', 'userId')->sum('amount'); 

без везения ...

ответ

8

Некоторые thaughts и, надеюсь, ответ на ваш вопрос:

Я бы переименовал пользовательскую таблицу, чтобы пользователи придерживались laravel conventio нс. http://laravel.com/docs/4.2/eloquent#basic-usage

Я бы назвал этот метод в модели заказов пользователя

public function orders() 
{ 
    return $this->hasMany('Order', 'userId'); 
} 

Для запроса пользователя, его приказы и сумму после этого его приказы сумма значений:

$userdata = User::with('orders')->where('userId', 15)->first(); 
$sum = $userdata[ 'orders' ]->sum('amount'); 
+0

Спасибо за ответ. Я был очень расплывчатым в определении моих таблиц ... конечно, это называется «пользователями», а моя модель называется «Пользователь», но я боюсь, что ваше не решение, которое я ищу ... Взгляните на [ это]: http: //stackoverflow.com/questions/25655388/get-max-value-for-each-related-model-with-eloquent-in-laravel и посмотреть, как Ярек Ткачик решил мою проблему с помощью "latest()" функция ... я ищу что-то подобное – ciccioassenza

+0

ах о ... Я не вижу этого в твоем вопросе, но эй, я рад, что ты нашел свое решение :-) – Kristo

+0

Прости меня, мой английский плохой, и у меня есть проблема с объяснением проблемы ... ссылка, которую я опубликовал, связана с другим вопросом, в котором я хотел бы указать, как с этим решением я смог взять только последнее сообщение среди связанных между собой, без использования foreach. Проблема сохраняется :( – ciccioassenza

Смежные вопросы