递归 Eloquent 模型

Recursive Eloquent Models

我有一个 Message::class,我想为每条特定消息获取线程消息。

如何使用 Laravel 和 Eloquent::hasMany

递归获取消息和消息的消息等

到目前为止,我尝试在 hasMany()

上设置递归
public function replys()
{
  return $this->hasMany(Message::class, 'reply_to', 'id');
}

public function replies()
{
    $r = $this->replys;
    if(count($r->get('replys')) > 0){
      foreach($r->get('replys') as $reply) {
        $r->push(Message::create($reply)->replies());
      }
    }

    return $r;
}

但我好像没看懂。目前我正在尝试查看是否可以使用 pivot table 和 reference belongsToMany 。会让你知道事情的进展

研究让我找到 this thread,它建议如何通过 hasMany

获取递归记录

因此

public function replys()
{
  return $this->hasMany(Message::class, 'reply_to', 'id');
}

public function replies()
{
  return $this->replys()->with('replies');
}

没想到会这么简单,但我希望我可以保持简单,而不必设计复杂的原始查询语句。

我现在的问题是这种递归方法如何经得起大数据集?