gpt4 book ai didi

php - 在 laravel 中获取所有平均评分等于 5 的产品

转载 作者:行者123 更新时间:2023-12-04 14:13:05 25 4
gpt4 key购买 nike

我有 2 表产品和评论

  • 产品有很多评论
  • 评论属于产品

我只想获得 avg('ratings') 等于 5 的那些产品

从 Controller 中,我得到 products = Product::with('category')->with('reviews')->get();

现在想要在顶级产品的一部分中显示在 Blade ​​中

$product->reviews()->avg('ratings')我用它来获得单个产品的平均评分。

现在我想获得平均评分 = 5 的产品集合。我试过这一行

$products->reviews()->avg('ratings')->where('ratings',5)->take(3)

但这没有用。谁能帮我解决我的问题?

最佳答案

你可能想尝试这样的事情:

$products = Product::with(['category', 'review'])
->leftJoin('reviews', 'reviews.product_id', '=', 'proucts.id')
->select(['products.*',
DB::raw('AVG(reviews.rating) as ratings_average')
])
->where('ratings_average', 5)
->get();

您可能想尝试一下语法,因为我不太确定它是否有效,但您应该了解我们正在尝试做什么。

编辑

如果您已经将收藏作为 $products = Product::with('category')->with('reviews')->get();,那么您甚至可以更简单过滤它使用:

$productsFiltered = $products->filter(function($product){
return $product->reviews->avg('rating') == 5;
});

关于php - 在 laravel 中获取所有平均评分等于 5 的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62792920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com