在Laravel Eloquent中获取和过滤关系

拉斐尔·布加杰夫斯基(Rafael Bugajewski)

我在Eloquent中有以下模型:组,线程,注释和用户。我想找到特定用户在特定组中的所有评论。

这是我目前的方法:

$group->threads->each(function ($thread) use ($user_id)
{
  $user_comments = $thread->comments->filter(function ($comment) use ($user_id)
  {
    return $comment->owner_id == $id;
  });
});

这看起来像地狱一样丑陋,可能像地狱一样慢,我只是想摆脱它。在Eloquent中最快和最优雅的方法是什么才能得到我的结果集?

拉斐尔·布加杰夫斯基(Rafael Bugajewski)

patricus解决方案为我指明了正确的方向。我交叉将我的问题发布到laracasts论坛,并得到Jarek Tkaczyk的大力帮助,他也经常访问该网站。

hasManyThrough()因为Group模型是要走的路:

public function comments()
{
  return $this->hasManyThrough('ThreadComment', 'Thread');
}

但是,有几点警告:

  1. 使用关系对象而不是集合($group->comments()NOT $group->comments
  2. 如果您使用Laravel的软删除功能,则不能仅将更get()改为a delete(),因为您将获得column的歧义错误updated_at您也不能加上前缀,这只是Eloquent的工作方式。

如果要删除特定组中特定用户的所有评论,则必须做一些不同的操作:

$commentsToDelete = $group->comments()
        ->where('threads_comments.owner_id', $id)
        ->select('threads_comments.id')
        ->lists('id');

ThreadComment::whereIn('id', $commentsToDelete)->delete();

您基本上会在第一个查询中获取所有相关的ID,然后在第二个查询中批量删除它们。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel Eloquent 获取与数据透视表中的值匹配的关系

来自分类Dev

在Laravel Eloquent中查询关系内的关系

来自分类Dev

Laravel Eloquent获取JSON关系嵌套

来自分类Dev

Laravel Eloquent获取JSON关系嵌套

来自分类Dev

Laravel 多重归属和关系 - Eloquent

来自分类Dev

基于关系获取集合中的Laravel模型的列表和计数

来自分类Dev

仅从 Laravel 集合和关系中获取特定属性

来自分类Dev

如何在 Laravel 中定义 Eloquent 关系

来自分类Dev

使用关系选择 Laravel Eloquent 中的字段

来自分类Dev

Laravel Eloquent - 从关系中检索数据

来自分类Dev

从关系中获取数据,Laravel

来自分类Dev

过滤器的组合可以是可选的laravel eloquent关系

来自分类Dev

Laravel Eloquent-仅在“ with”中的“ where”条件为true的情况下获取关系元素

来自分类Dev

在Laravel 5.1中获取过滤的和相关的记录

来自分类Dev

Laravel Eloquent 关系

来自分类Dev

Laravel eloquent 模型关系

来自分类Dev

渴望在Laravel和Eloquent中加载渴望加载到模型中的关系(受保护的$ with)

来自分类Dev

laravel如何在会话中存储模型和关系ID,以便再次获取关系

来自分类Dev

从 Laravel Eloquent 结果比较和获取日期

来自分类Dev

Laravel Eloquent:获取包含两个特定关系的记录

来自分类Dev

Laravel:如何使用Eloquent获取关系列的SUM

来自分类Dev

Laravel-使用Eloquent获取没有ID的belongsTo关系

来自分类Dev

关系满足Laravel Eloquent条件时如何获取产品

来自分类Dev

Laravel Eloquent属于ToyTo和hasMany关系查询

来自分类Dev

使用Laravel和Eloquent选择正确的关系类型

来自分类Dev

Laravel 和 Eloquent 在 hasOne 方面的保存关系

来自分类Dev

通过多对多关系获取 Laravel 模型过滤

来自分类Dev

Laravel从多对多关系中获取数据

来自分类Dev

查询以获取Laravel中的关系数据

Related 相关文章

  1. 1

    Laravel Eloquent 获取与数据透视表中的值匹配的关系

  2. 2

    在Laravel Eloquent中查询关系内的关系

  3. 3

    Laravel Eloquent获取JSON关系嵌套

  4. 4

    Laravel Eloquent获取JSON关系嵌套

  5. 5

    Laravel 多重归属和关系 - Eloquent

  6. 6

    基于关系获取集合中的Laravel模型的列表和计数

  7. 7

    仅从 Laravel 集合和关系中获取特定属性

  8. 8

    如何在 Laravel 中定义 Eloquent 关系

  9. 9

    使用关系选择 Laravel Eloquent 中的字段

  10. 10

    Laravel Eloquent - 从关系中检索数据

  11. 11

    从关系中获取数据,Laravel

  12. 12

    过滤器的组合可以是可选的laravel eloquent关系

  13. 13

    Laravel Eloquent-仅在“ with”中的“ where”条件为true的情况下获取关系元素

  14. 14

    在Laravel 5.1中获取过滤的和相关的记录

  15. 15

    Laravel Eloquent 关系

  16. 16

    Laravel eloquent 模型关系

  17. 17

    渴望在Laravel和Eloquent中加载渴望加载到模型中的关系(受保护的$ with)

  18. 18

    laravel如何在会话中存储模型和关系ID,以便再次获取关系

  19. 19

    从 Laravel Eloquent 结果比较和获取日期

  20. 20

    Laravel Eloquent:获取包含两个特定关系的记录

  21. 21

    Laravel:如何使用Eloquent获取关系列的SUM

  22. 22

    Laravel-使用Eloquent获取没有ID的belongsTo关系

  23. 23

    关系满足Laravel Eloquent条件时如何获取产品

  24. 24

    Laravel Eloquent属于ToyTo和hasMany关系查询

  25. 25

    使用Laravel和Eloquent选择正确的关系类型

  26. 26

    Laravel 和 Eloquent 在 hasOne 方面的保存关系

  27. 27

    通过多对多关系获取 Laravel 模型过滤

  28. 28

    Laravel从多对多关系中获取数据

  29. 29

    查询以获取Laravel中的关系数据

热门标签

归档