我正在使用 CakePHP 1.3 的 TreeBehavior。在一个数据库表中,我得到了所有模型记录。每条记录都有一个type
存储模型名称的字段。到目前为止,一切都在发挥魅力。但是我在特定操作中遇到了一些错误。首先,如果我这样做$this->Article->verify()
,几乎每条记录都会出错:
Array
(
[0] => Array
(
[0] => index
[1] => 1
[2] => missing
)
[1] => Array
(
[0] => index
[1] => 2
[2] => missing
)
[2] => Array
(
[0] => index
[1] => 3
[2] => missing
)
....
我没有发现有错误的记录和没有错误的记录之间有任何区别
我试过Recover
但还是一样。为什么我会收到这些错误,它们是什么意思?我检查了树数据,每个字段 ( parent_id
, lft
, rght
) 都是正确的。
另一个问题:
我想移动记录up
并down
在树中。如果我设置scope
记录,type
我会移动它们,但其他类型的所有子记录都不会移动。我的树是这样的:
Category
Category
Category
Attachment
Category
Attachment
Article
Attachment
Attachment
Article
Attachment
Attachment
Category
Category
如果我不设置scope
移动记录,有时看不到树的末端并开始在其他记录类型之间移动。如何设置scope
以避免这种情况?
编辑:我已经找到了可能的问题,可能一切都来自使用一个表在多个模型中同时使用Tree
和Translate
(我没有提到)行为。那么会发生什么:
在为每个模型保存数据时,它还会在 i18n 表中保存一条记录和翻译。并且当检查verify
或检查recover
表时,树行为仅“看到”当前模型中的帖子,也给出“缺失索引”,因为没有看到其他模型的记录。
有没有办法解决这个问题,让它工作或寻找其他选择?
是否有任何选项可以在一个数据库中使用多棵树。所以 rght,lft 值将为每个模型复制,但不会有冲突,因为它们不会“知道”彼此。只是使用一个表而不是 10+ 具有相同的结构