递归雄辩模型

时间:2016-12-15 21:29:31

标签: laravel laravel-5.3 laravel-eloquent

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

如何使用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。让你知道事情的进展

1 个答案:

答案 0 :(得分:0)

研究让我this thread建议如何通过hasMany

获取递归记录

从而

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

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

不要认为这很容易,但我希望我可以保持简单,而不必设计复杂的原始查询语句。

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