如何在Laravel中递归获取记录?

时间:2016-10-11 20:24:42

标签: laravel eloquent

我的应用中有实体称为帖子。帖子可以是其他帖子的子节点,因此父帖子有hasMany('posts'),子节点有hasOne('post'),包含是无限的。

这是架构:

enter image description here

如何递归获取第一个将'post_id'设置为null的Post的子女等子女和孩子?

请不要在这里评论性能,我知道这样的架构是坏的,我想知道的只是如何正确编写递归函数来检索无限的嵌套帖子。

比如说,我有第一篇文章1.
第2和第3个帖子是帖子1的子女 第4和第5职位是职位2的子女 职位6和7是职位3的子女 职位8,9,10是职位5的子女。
第11,12,13号职位是职位7的子女 第14篇是第10期的子女。
我想写一个递归函数,它会给我2-14的帖子。 enter image description here

1 个答案:

答案 0 :(得分:1)

由于您明确要求我们不要对性能发表评论,因此您应该在帖子模型上添加with属性,以便热切地包含所有孩子。

class Post extends Model
{

   protected $with = [
        'posts'
   ];

   public function posts() {
        return $this->hasMany(Post::class);
    }

}