php - Laravel 高阶消息意外结果

标签 php laravel laravel-6 laravel-collection

我有一个 higher order message在拉拉维尔。看起来像
这个:

$category->scores->each->ratings->where('result.rating', '>=', 3)->count();

A categoryscores scoreratings和一个 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/

相关文章:

javascript - $.ajax 在我的代码中无法正常工作

php - 除非路由被命名,否则 Laravel 无法找到路由

php - 在 Laravel 中使用 RefreshDatabase 时尝试访问 null 类型值的数组偏移量

laravel - 如何从最后5行中获取随机行?

php - 当我尝试在我的项目 laravel 6.x 上使用 redis 时,它显示此错误消息

php - 将自定义元数据添加到 Woocommerce 3 中的管理订单编辑页面

php - MySQL group by 当天无记录时如何填充空值

php - HTML 链接带有点 (.) 的 ID

php - 如何使用 CSRF token 发布到 Laravel API?

javascript - 使用ajax重新执行php循环