我正在使用Yiiext“嵌套设置行为”的奇妙扩展:
https://github.com/yiiext/nested-set-behavior
我很想知道当我运行具有多个根的嵌套集时,是否有人可以让我知道如何移动(向上或向下)根节点。
树例子:
当我拿出完整的树并向用户显示时,我得到了上述结果。
我希望能够在“电话”之前移动“汽车”。
有没有办法做到这一点?
我试过了:
$cars = Category::model()->findByPk($cars_id);
$phones = $cars->prev()->find();
$cars->moveBefore($phones);
这使我在嵌套集行为类的moveAfter方法中出错。
之前有人这么做过吗?
由于
戴夫
答案 0 :(得分:0)
正如文档建议的那样,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);
}
这没有意义;)
(p.s:未测试此代码)
答案 1 :(得分:0)
据我所知,你有3个节点,它们是根。 问题是方法moveAfter()和moveBefore()不能应用于主根。 您正在尝试移动节点,相对另一个节点,但它们位于不同的树中。 如果汽车和手机有共同的根,那就会成功。
换句话说,你使用不同树中的节点进行操作,这些树对彼此一无所知。