1

我有一个 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;
}

但我似乎错过了标记。目前我正在尝试查看是否可以使用数据透视表和参考belongsToMany。会让你知道事情的进展

4

1 回答 1

1

研究使我找到了这个线程,该线程建议如何通过以下方式获取递归记录hasMany

因此

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

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

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

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

于 2016-12-16T15:12:12.697 回答