0

我有 3 张桌子

  1. 用户
  2. 产品
  3. 收视率

和3个模型

  1. 用户
  2. 产品
  3. 评分

关系

  1. 产品属于用户
  2. 用户有很多评价

现在我想获取用户评分超过 2 的产品。

如何编写查询?

4

2 回答 2

0

您还可以在您的用户模型中与 hasManyThrough(Product::class, Rating::class) 建立关系,然后使用它。

查看有关 eloquent 的 laravel 文档,以更好地了解如何使用它进行查询:

https://laravel.com/docs/7.x/eloquent

并查看文档中的关系部分,了解 hasManyThrough 是如何工作的。

https://laravel.com/docs/7.x/eloquent-relationships#introduction

于 2020-05-24T13:02:59.500 回答
0

您可以使用该whereHas()方法。例如

假设您的ratings表有一个rating存储评分值的字段,并且关系被命名为

  1. 产品属于用户:关系名称=users
  2. 用户 hasMany Rating : 关系名称 =ratings

然后你可以尝试

$products = Product::whereHas('users.ratings', function($rating){
    $rating->where('rating','>',2); 
})->get();
于 2020-05-24T13:03:13.640 回答