如何编写Laravel 7嵌套查询?

时间:2020-05-24 12:26:55

标签: laravel eloquent eloquent-relationship

我有3张桌子

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

和3个模型

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

关系

  1. 产品属于用户
  2. 用户的评分很高

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

如何编写查询?

2 个答案:

答案 0 :(得分:0)

您还可以在用户模型中使用hasManyThrough(Product :: class,Rating :: class)建立关系,然后再进行处理。

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

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

并查看文档中的“关系”部分,了解hasManyThrough的工作原理。

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

答案 1 :(得分:0)

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

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

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

然后您可以尝试

$products = Product::whereHas('users.ratings', function($rating){
    $rating->where('rating','>',2); 
})->get();
相关问题