获取从 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 5 具有雄辩的关系回调函数返回错误记录

从 Laravel 中的 Mysql Pivot 表中获取列并返回 JSON 对象

从laravel控制器返回json时尝试获取非对象的属性“id”

如何从 laravel 中的集合中获取 ID?

如何通过 laravel 8 惯性中的模型访问关系