获取从 Laravel 4.1 中的模型返回的记录总和
Posted
技术标签:
【中文标题】获取从 Laravel 4.1 中的模型返回的记录总和【英文标题】:Getting the sum of records returned from a model in Laravel 4.1 【发布时间】:2014-03-18 21:43:41 【问题描述】:我的用户模块中有以下内容
// A user has many assets.
public function assets()
return $this->belongsToMany('Asset');
在我的控制器中,我有:
$assetValue = User::find($id)->assets;
我只想从返回的记录中总结单个字段的值并将其传递给视图。
我尝试过使用各种 SUM() 调用,但现在我被难住了。
所以像这样的东西会很棒
$assetValue = User::find($id)->assets->sum('values');
谢谢
Edit* $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"]
【问题讨论】:
像您一样使用sum
在技术上应该可行。结果是什么,您是否使用了正确的列名?
感谢您的回复。我正在使用正确的列名(值)。我打印出 $assetValue 并将输出添加到我的问题中。使用的结果:$assetValue = User::find($id)->assets->sum('value');
是Call to undefined method Illuminate\Database\Eloquent\Collection::sum()
【参考方案1】:
User::find($id)->assets
会给你一个Eloquent\Collection
,它不允许你查询已经从数据库中提取的结果。
要访问Eloquent\Builder
对象,您可以使用User::find($id)->assets()->sum('value');
查询需要的结果
【讨论】:
谢谢。我会在我在家的时候尝试这个,并在它工作时标记为答案:) 完美运行。谢谢以上是关于获取从 Laravel 4.1 中的模型返回的记录总和的主要内容,如果未能解决你的问题,请参考以下文章
如何从每个父模型中获取 N 条记录?在 laravel 中雄辩
从 Laravel 中的 Mysql Pivot 表中获取列并返回 JSON 对象