Yii Nested Set (Yiiext).尝试移动根节点



我正在使用Yiiext的奇妙扩展"nested-set-behavior":
https://github.com/yiiext/nested-set-behavior

我很想知道当我运行具有多个根的嵌套集时,是否有人可以让我知道如何移动(向上或向下)根节点。

树示例:

  1. 电话(根节点)
    1.1 移动
    1.2 固定
  2. 汽车(根节点)
    2.1 快速
    2.2 慢
    2.3 平均
  3. 平面(根节点)
    3.1 大
    3.2 小

在我拉出整个树并将其展示给用户的那一刻,我得到了上述结果。

我希望能够在"电话"之前移动"汽车"。

有什么办法可以做到这一点吗?

我试过:

    $cars        = Category::model()->findByPk($cars_id);
    $phones      = $cars->prev()->find();
    $cars->moveBefore($phones);

这在嵌套集行为类的 moveAfter 方法中给我带来了错误。

以前有人这样做过吗?

谢谢

戴夫

正如文档建议的那样,prev() 方法返回:

Array of Active Record objects corresponding to ....

因此,您必须以不同的方式处理此问题,例如

$phones = Category::model()->findByPk($phones_id);
$cars = Category::model()->findByPk($cars_id);
$cars->moveBefore($phones);

或其他适合您的应用场景的方法

您的代码可以通过以下方式修复:

$cars        = Category::model()->findByPk($cars_id);
$phones      = $cars->prev()->find();
foreach($phones as $phone){
  $cars->moveBefore($phone);
}

这;)没有意义

(附注:没有测试此代码)

据我了解,您有 3 个节点,它们是根。问题是方法moveAfter()和moveBefore()不能应用于主根。您正在尝试移动一个节点,相对于另一个节点,但它们位于不同的树中。如果汽车和手机有一个共同的根源,那就是成功。

换句话说,您使用不同树中的节点进行操作,这些节点彼此一无所知。

最新更新