我有问题,为我的Page表订购正确的选择。
实际实施:
private function findPageBySlug($slug)
{
$page = Page::with('children')
->where('active', 1)
->where('slug', $slug)
->first();
if (property_exists($page, 'chidlren')) {
return $page->whereHas('children', function ($child) {
return $child->where('active', 1)->orderBy('order', 'asc');
});
} else {
return $page;
}
}
我需要选择Page的所有子项并按顺序列排序,并且子项可以有另一个子项等等对deepth没有限制。 是否可以为此选择?
感谢您的帮助
答案 0 :(得分:1)
如果您希望获得所有儿童而不是儿童过滤网页,请使用with()
。而不是:
return $page->whereHas('children', function ($child) {
return $child->where('active', 1)->orderBy('order', 'asc');
});
执行:
return $page->with(['children' => function ($child) {
return $child->where('active', 1)->orderBy('order', 'asc');
}]);
如果你想要bith过滤并加载孩子,请链接wherHas()
和with()