2015-10-15 87 views
0

我正在使用Laravel 5.1與lazychaser/laravel-nestedset來創建一個可以工作的父/子樹文件夾,但我無法弄清楚如何獲取相關文章文件夾及其後代:Laravel 5.1查詢多個其他對象的相關對象

// first I get the folder 
$folder = Auth::user()->folders()->where('slug', '=', 'some-slug')->first(); 

// Next I get the descendants, which gives me a 
// collection of Folder objects 
$descendants = $folder->getDescendants(); 

現在是問題所在。當我剛開始在相關的帖子單個文件夾對象,我這樣做是這樣的:

// Where $folder is a single Folder object 
$posts = $folder->posts()->orderBy('created_at', 'desc')->paginate(100); 

但我需要得到所有後代文件夾中公告()爲好,不只是一個。喜歡的東西:

// Where $folders is a collection of Folder objects 
$posts = $folders->posts()->orderBy('created_at', 'desc')->paginate(100); 

我需要得到後的集合對象回到屬於最初的文件夾對象和任何它的後代,但我無法弄清楚如何與多個文件夾中對象做到這一點。

一種解決方案可能是循環瀏覽Folder對象,創建多個集合,將它們合併,然後對它們進行排序,但這似乎不會起作用,因爲我正在分頁,並且分頁必須發生在查詢中,更何況,取決於有多少帖子,這會太慢。

有沒有一種方法可以同時獲得多個Folder對象的相關Post對象,或者有一種方法可以做到這一點我沒有看到?

感謝您的幫助。

回答

0

您可以使用foreach循環:

$posts=[]; 
foreach($folders as $folder) 
{ 
    $posts[]=$folder->posts()->orderBy('created_at', 'desc')->paginate(100); 
} 

然後你就可以收集他們:

$collecttion=collect($posts); 
+0

這是我最初嘗試,但問題是收集持有2點分頁集合,所以我獲得兩倍的發佈數,因爲 - >分頁(100)單獨運行。感謝您的回覆,但我需要得到一個分頁的集合和循環的文件夾給我多個。 –

+0

@ caleb-jacobo也許你應該在收集它們後分頁。 –