Ich habe ein Forum-System mit vielen Kategorien, die viele Threads hat, die viele Beiträge hat.Laravel Rekursion - Suche nach dem "letzten Beitrag"
Also mit gegebenen Forum sollte ich in der Lage sein, herauszufinden, der letzte Beitrag, dass bestimmte Forum hat. Ein Forum kann viele Unterforen (alias Kinder) haben. Ich konnte nur einen Teil davon machen.
Tabelle Demo:
| id | parent_id | name | is_category |
|----|-----------|-------------------|-------------|
| 1 | 0 | Suggestions | 1 |
| 2 | 1 | site suggestions | 0 |
| 3 | 1 | forum suggestions | 0 |
| 4 | 2 | bugs | 0 |
Hier ist mein Code:
public function lastPost()
{
foreach ($this->threads()->orderBy('updated_at')->get() as $thread) {
$post = $thread->lastPost();
}
if ($this->hasSubforum()) {
foreach ($this->subforums as $subforum) {
$post = $subforum->lastPost();
}
}
return $post;
}
Wie Sie sehen können, lastPost()
genannt wird, bis das Forum nicht mehr Subforen hat. Ich bekomme den letzten Beitrag vom letzten Thread in einem Unterforum. So weit, ist es gut. Der letzte Post wäre jedoch die Reihenfolge, in der sich das Unterforum befindet. Wenn also der letzte Post im zweitletzten Unterforum war, gibt er den letzten Post des letzten Unterforums zurück, da das letzte Forum zuletzt in der Rekursion zurückgegeben wurde.
Wie kann ich das beheben?
Danke!
Überprüfen Sie das Datum und stellen Sie nur $ post ein, wenn das Datum jünger ist (oder sogar die id der Post - vorausgesetzt, es gibt eine - vorausgesetzt, es ist seriell)? –
Sie können wahrscheinlich die letzte Methode auf Ihrer $ this-> threads() ... etc Sammlung verwenden, richtig? https://laravel.com/docs/5.1/collections#method-last – ExohJosh