我有 3 张桌子
- 用户
- 产品
- 收视率
和3个模型
- 用户
- 产品
- 评分
关系
- 产品属于用户
- 用户有很多评价
现在我想获取用户评分超过 2 的产品。
如何编写查询?
我有 3 张桌子
和3个模型
关系
现在我想获取用户评分超过 2 的产品。
如何编写查询?
您还可以在您的用户模型中与 hasManyThrough(Product::class, Rating::class) 建立关系,然后使用它。
查看有关 eloquent 的 laravel 文档,以更好地了解如何使用它进行查询:
https://laravel.com/docs/7.x/eloquent
并查看文档中的关系部分,了解 hasManyThrough 是如何工作的。
https://laravel.com/docs/7.x/eloquent-relationships#introduction
您可以使用该whereHas()
方法。例如
假设您的ratings
表有一个rating
存储评分值的字段,并且关系被命名为
users
ratings
然后你可以尝试
$products = Product::whereHas('users.ratings', function($rating){
$rating->where('rating','>',2);
})->get();