質問

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