假设我有表
订单
带字段
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');
没有运气......
答案 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' );