我有一个 higher order message在拉拉维尔。看起来像
这个:
$category->scores->each->ratings->where('result.rating', '>=', 3)->count();
A
category
有 scores
score
有 ratings
和一个 rating
有一个 result
.我想获得每个 的评分总数类别
where >= 3
.使用我现在拥有的代码,最终结果始终为 0。
但是当我像这样循环时:
@foreach($categories as $category)
@foreach($category->scores as $score)
@foreach($score->ratings->where('result.rating', '>=', 3) as $rating)
{{ $rating->result->result_nl }}
@endforeach
@endforeach
@endforeach
有3个评分结果。
我的高阶消息有什么问题?
最佳答案
您的问题中有一些对高阶函数的误解。在文档和 Laravel
中实现他们使用方法调用。
在这里,您正在尝试做一个 sum
在 each 调用中, each 不返回任何内容,而是一个 Collection
替代 foreach
的方法.
如果将以下函数添加到评分模型中。
public function ratingsOverTree()
{
return $this->ratings->where('result.rating', '>=', 3)->count();
}
您可以使用 sum
将结果相加的方法,使用ratingsOverTree()
方法。$category->scores->sum->ratingsOverTree();
关于php - Laravel 高阶消息意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58393170/