0

我正在使用 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) 都是正确的。

另一个问题:

我想移动记录updown在树中。如果我设置scope记录,type我会移动它们,但其他类型的所有子记录都不会移动。我的树是这样的:

 Category
    Category
       Category
       Attachment
    Category
       Attachment
    Article
       Attachment
       Attachment
    Article
       Attachment
    Attachment
 Category
 Category

如果我不设置scope移动记录,有时看不到树的末端并开始在其他记录类型之间移动。如何设置scope以避免这种情况?

编辑:我已经找到了可能的问题,可能一切都来自使用一个表在多个模型中同时使用TreeTranslate(我没有提到)行为。那么会发生什么:

在为每个模型保存数据时,它还会在 i18n 表中保存一条记录和翻译。并且当检查verify或检查recover表时,树行为仅“看到”当前模型​​中的帖子,也给出“缺失索引”,因为没有看到其他模型的记录。

有没有办法解决这个问题,让它工作或寻找其他选择?

是否有任何选项可以在一个数据库中使用多棵树。所以 rght,lft 值将为每个模型复制,但不会有冲突,因为它们不会“知道”彼此。只是使用一个表而不是 10+ 具有相同的结构

4

1 回答 1

0

如果您的树元数据是正确的,那么以下内容应该可以解决您自己的代码中没有的任何问题:

$this->Article->recover($mode = 'tree');

有关详细信息,请参阅http://book.cakephp.org/1.3/view/1356/Data-Integrity

于 2012-10-14T23:33:30.143 回答