如何使用Eloquent ORM的多对多关系结果查询表?

Naneri

这是我的数据库架构的链接: 在此处输入图片说明

如何从使用ID订阅用户的博客中获取所有主题?我使用雄辩的ORM。

我在用户模型中添加了以下几行:

public function blogs()
{
    return $this->belongsToMany('Blog', 'blog_subscriptions');
}

然后在控制器中请求

User::find(1)->blogs;  // User id is hardcoded

这样,我得到了用户已订阅的所有博客。现在,我被困在如何获取这些博客的主题上。

贾里克·特卡奇克(Jarek Tkaczyk)

假设关系:

// User
belongsToMany('Blog', 'user_subscriptions')

// Blog
belongsToMany('User', 'user_subscriptions')
hasMany('Topic')

// Topic
belongsTo('Blog')

1我的方式,无论嵌套的深度如何,它都适用于任何关系:

User::with(['blogs.topics' => function ($q) use (&$topics) {
  $topics = $q->get()->unique();
}])->find($userId);

2种口才标准方法:

$topics = Topic::whereHas('blog', function ($q) use ($userId) {
  $q->whereHas('users', function ($q) use ($userId) {
    $q->where('users.id', $userId);
  });
})->get();

// or
$user = User::find($userId);
foreach ($user->blogs as $blog)
{
  $blog->topics; // collection of topics for every single blog
}

3个加入:

$topics = Topic::join('blogs', 'topics.blog_id', '=', 'blogs.id')
     ->join('user_subscriptions as us', function ($j) use ($userId) {
        $j->on('us.blog_id', '=', 'blogs.id')
          ->where('us.user_id', '=', $userId);
      })->get(['topics.*']);

请注意,最后一个解决方案将取决于您的数据透视数据一致性。也就是说,如果不能确定其中没有多余的条目user_subscriptions(例如,博客或用户已被删除,但枢轴条目仍然存在),那么您还需要进一步加入users

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过口才ORM使用多对多关系结果查询表?

来自分类Dev

Laravel> 使用 Eloquent 查询多对多关系

来自分类Dev

eloquent:查询多对多关系

来自分类Dev

如何用特征表查询多对多关系(AND条件)

来自分类Dev

如何查询多对多关系?

来自分类Dev

如何使用pony orm以多对多关系加载数据?

来自分类Dev

使用Gorm查询多对多关系

来自分类Dev

如何引用多对多关系的相交表?

来自分类Dev

如何使EF查询返回MVC 5 ASP.NET中多对多关系表的聚合值

来自分类Dev

如何在满足计数条件的情况下查询具有多对多关系的表

来自分类Dev

为什么SQLite不对我的多对多关系表中的查询使用索引?

来自分类Dev

使用Lambda表达式在多对多关系表中实现查询

来自分类Dev

为什么SQLite不对我的多对多关系表中的查询使用索引?

来自分类Dev

查询优化-使用SQL有效地整理一对多关系表的结果

来自分类Dev

如何使用Knex.js查询多对多关系?

来自分类Dev

如何使用实体框架查询多对多关系

来自分类Dev

使用redux-orm引导多对多关系

来自分类Dev

Slick 3.0.0:如何查询一对多/多对多关系

来自分类Dev

首先使用关系表中的属性编码多对多关系

来自分类Dev

首先使用关系表中的属性编码多对多关系

来自分类Dev

使用Laravel查询多对多关系和更多数据(Lumen / Eloquent)

来自分类Dev

使用多对多关系精简程序得到多个结果

来自分类Dev

如何查询多对多关系中的空记录

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

如何从多对多关系的属性中获取Django查询的值?

来自分类Dev

如何在Oracle中获取多对多关系查询?

来自分类Dev

如何查询与实体框架的多对多关系6

来自分类Dev

如何在Django上查询多对多关系?

来自分类Dev

如何在 Laravel 中查询逆多对多关系

Related 相关文章

  1. 1

    如何通过口才ORM使用多对多关系结果查询表?

  2. 2

    Laravel> 使用 Eloquent 查询多对多关系

  3. 3

    eloquent:查询多对多关系

  4. 4

    如何用特征表查询多对多关系(AND条件)

  5. 5

    如何查询多对多关系?

  6. 6

    如何使用pony orm以多对多关系加载数据?

  7. 7

    使用Gorm查询多对多关系

  8. 8

    如何引用多对多关系的相交表?

  9. 9

    如何使EF查询返回MVC 5 ASP.NET中多对多关系表的聚合值

  10. 10

    如何在满足计数条件的情况下查询具有多对多关系的表

  11. 11

    为什么SQLite不对我的多对多关系表中的查询使用索引?

  12. 12

    使用Lambda表达式在多对多关系表中实现查询

  13. 13

    为什么SQLite不对我的多对多关系表中的查询使用索引?

  14. 14

    查询优化-使用SQL有效地整理一对多关系表的结果

  15. 15

    如何使用Knex.js查询多对多关系?

  16. 16

    如何使用实体框架查询多对多关系

  17. 17

    使用redux-orm引导多对多关系

  18. 18

    Slick 3.0.0:如何查询一对多/多对多关系

  19. 19

    首先使用关系表中的属性编码多对多关系

  20. 20

    首先使用关系表中的属性编码多对多关系

  21. 21

    使用Laravel查询多对多关系和更多数据(Lumen / Eloquent)

  22. 22

    使用多对多关系精简程序得到多个结果

  23. 23

    如何查询多对多关系中的空记录

  24. 24

    如何从多对多关系的属性中获取Django查询的值?

  25. 25

    如何从多对多关系的属性中获取Django查询的值?

  26. 26

    如何在Oracle中获取多对多关系查询?

  27. 27

    如何查询与实体框架的多对多关系6

  28. 28

    如何在Django上查询多对多关系?

  29. 29

    如何在 Laravel 中查询逆多对多关系

热门标签

归档