I have the following in my user module

// A user has many assets.
public function assets()
{
 return $this->belongsToMany('Asset');
}

In my controller I have:

$assetValue = User::find($id)->assets;

I only want to sum up the values from a single field from the records returned and pass it to a view.

I've tried using all sorts of SUM() calls and I am now stumped.

So something like this would be great

$assetValue = User::find($id)->assets->sum('values');

Thanks

Edit* The output of $assetValue = User::find($id)->assets;

[{"id":"1","name":"asset1","serial_num":"1234","value":"100.00","created_at":"2014-03-18 20:06:37","updated_at":"2014-03-18 20:06:37","pivot":{"user_id":"1","asset_id":"1"}},

{"id":"2","name":"asset2","serial_num":"5678","value":"200.00","created_at":"2014-03-18 20:06:37","updated_at":"2014-03-18 20:06:37","pivot":{"user_id":"1","asset_id":"2"}},

{"id":"3","name":"asset3","serial_num":"91011","value":"300.00","created_at":"2014-03-18 20:06:37","updated_at":"2014-03-18 20:06:37","pivot":{"user_id":"1","asset_id":"3"}}]
有帮助吗?

解决方案

User::find($id)->assets will give you a Eloquent\Collection which doesn't allow you to query the results as they've already been pulled from the database.

To access the Eloquent\Builder object which would allow you to query the results you need to use User::find($id)->assets()->sum('value');

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top