Php 如何合并Laravel';将Baum层次树合并为一棵树?

Php 如何合并Laravel';将Baum层次树合并为一棵树?,php,recursion,laravel-5,tree,Php,Recursion,Laravel 5,Tree,我正在使用Laravel5.1和包在我的类别模型上实现嵌套集 我有一个类别的集合,对于每个类别,我都会得到它们的祖先,如下所示: $category->getAncestorsAndSelf()->toHierarchy(); 例如,假设我有4个类别:类别C,类别D,类别E和类别F。每棵树都是这样的: $category->getAncestorsAndSelf()->toHierarchy(); A类 B类 C类 A类 B类 D类 A类 B类

我正在使用Laravel5.1和包在我的类别模型上实现嵌套集

我有一个类别的集合,对于每个类别,我都会得到它们的祖先,如下所示:

$category->getAncestorsAndSelf()->toHierarchy();
例如,假设我有4个类别:
类别C
类别D
类别E
类别F
。每棵树都是这样的:

$category->getAncestorsAndSelf()->toHierarchy();
  • A类
    • B类
      • C类
  • A类
    • B类
      • D类
  • A类
    • B类
      • C类
        • E类
  • A类
    • F类
我正试图将它们合并到一棵树中,如下所示:

$category->getAncestorsAndSelf()->toHierarchy();
  • A类
    • B类
      • C类
        • E类
      • D类
    • F类
到目前为止,我已经尝试了该函数和自定义递归函数,但没有成功,我总是以重复的函数结束。

您可以:

  • 获取层次结构中涉及的所有类别
  • 消除重复
  • 使用
    Baum\Extensions\Eloquent\Collection创建层次结构
使用Baum\Extensions\Eloquent\Collection作为BaumCollection;
// ... 
$categoriesandcestors=$categority
->平面图(功能($cat){
返回$cat->getAncestorsAndSelf();
})
->uniqueStrict(函数($cat){
返回$cat->id;
});
$result=BaumCollection::make($categoriesandcestors)->toHierarchy();

谢谢!不幸的是,我无法测试它,因为我不再与Laravel合作了。我在发帖3年后发现了它,所以也许再过3年,它会帮助某人:D