2014-11-02 44 views
5

假設我有表laravel - 雄辯 - 獲得相關的模型特定列的總和

訂單

與領域

ID,用戶id,數量,說明

和表

用戶

與各個領域

如何,如果我魔杖讓所有用戶(與所有的字段),並與該訂單的「金額」欄的總和用戶?

假設我有:

用戶:{ID:15,姓:吉姆,名字:莫里森,性別:雄性}

順序:{ id:1,userId:15,amount:10,description:「order xxx」},

order:{id:3,userId:15,amount:40,description:「order yyy」}

我想接收:

用戶:{ID:15,姓:吉姆,名字:莫里森,性別:男性,orderAmount:50}

當然I的希望避免使用foreach語句。

我已經設置好的這對我的用戶模型

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

而且我tryed這一點:

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

沒有任何的運氣...

回答

8

一些thaughts,希望答案你的問題:

我會重命名用戶表,以便用戶堅持laravel conventiontio納秒。 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,看看如何Jarek Tkaczyk解決我的問題與「最新()」功能...我在找那樣的東西 – ciccioassenza 2014-11-02 13:16:33

+0

啊,哦......我沒有看到你的問題,但嘿,我很高興你找到了你的解決方案:-) – Kristo 2014-11-02 13:25:58

+0

原諒我,我的英語不好,我有麻煩解釋這個問題......我發佈的鏈接與另一個問題有關,我想指出的是如何使用該解決方案,我只能在這些相關的內容中只輸入最後一條消息,而無需使用foreach。問題依然存在:( – ciccioassenza 2014-11-02 14:40:42