2016-12-15 121 views
1

我有一个消息::类,我想为每个特定的消息获得线程消息。递归雄辩模型

我怎么可以递归获取信息和使用Laravel和雄辩::的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

如何创建一个线程模型,其中每个线程可以有许多消息和消息属于一个线程。 – tam5

+0

@tam正在考虑同样的事情。想知道我是否应该创建一个数据透视表并按照我的方式使用'belongsToMany'的backwords必须跳过它一段时间,但会尽快发布结果 – Kendall

回答

0

研究使我this thread,暗示如何通过hasMany

从而得到递归记录

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

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

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

我现在的问题是这个递归方法如何抵挡大数据集?