laravel - eloquent - 得到相关模型特定列的总和

时间:2014-11-02 02:59:33

标签: laravel eloquent eager-loading

假设我有表

  

订单

带字段

  

id,userId,amount,description

和表格

  

用户

有各种领域

我如何获取所有用户(包括其所有字段)以及与该用户相关的订单的“金额”列的总和?

假设我有:

  

用户:{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 个答案:

答案 0 :(得分:8)

有些人希望能回答你的问题:

我会将用户表重命名为用户以坚持laravel约定。 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' );