我正在使用Laravel 5.1和lazychaser / laravel-nestedset来创建一个有效的文件夹的父/子树,但我无法弄清楚如何获取文件夹及其后代的相关帖子:
// 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();
现在问题就在于此。当我刚刚获得单个Folder对象的相关帖子时,我这样做了:
// 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对象及其任何后代的Post对象集合,但我无法弄清楚如何使用多个Folder对象完成此操作。
一个解决方案可能是循环遍历Folder对象,创建多个集合,组合它们,然后对它们进行排序,但这似乎不会起作用,因为我正在进行分页,并且分页必须在查询中发生,而不是提一下,根据有多少帖子,这会太慢了。
有没有办法同时获取多个Folder对象的相关Post对象,或者某种方式这样做我还没看到?
感谢您的帮助。
答案 0 :(得分:0)
您可以使用foreach循环:
$posts=[];
foreach($folders as $folder)
{
$posts[]=$folder->posts()->orderBy('created_at', 'desc')->paginate(100);
}
然后你可以收集它们:
$collecttion=collect($posts);