2016-12-15 179 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'); 
} 

沒想到會是這樣容易不過,我希望我可以保持簡單而不必設計複雜的原始查詢語句。

我現在的問題是這個遞歸方法如何抵擋大數據集?