Database 具有多类型树的CakePHP 1.3

Database 具有多类型树的CakePHP 1.3,database,cakephp,internationalization,tree,cakephp-1.3,Database,Cakephp,Internationalization,Tree,Cakephp 1.3,我正在使用CakePHP1.3的TreeBehavior。在一个DB表中,我得到了所有的模型记录。每个记录都有一个存储模型名称的类型字段。到目前为止,一切都很有魅力。但我在具体行动中遇到了一些错误。首先,如果我执行$this->Article->verify()操作,几乎每一条记录都会出现错误: Array ( [0] => Array ( [0] => index [1] => 1 [2] => missing

我正在使用CakePHP1.3的TreeBehavior。在一个DB表中,我得到了所有的模型记录。每个记录都有一个存储模型名称的
类型
字段。到目前为止,一切都很有魅力。但我在具体行动中遇到了一些错误。首先,如果我执行
$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
    )
 ....
我没有发现有错误的记录和没有错误的记录之间有任何区别

我尝试了
恢复
,但还是一样。为什么我会出现这些错误?它们意味着什么?我已经检查了树数据,每个字段(
parent\u id
lft
rght
)都是正确的

另一个问题:

我想将树中的记录上移和下移。如果我将
范围
设置为记录
类型
我会移动它们,但其他类型的所有子记录都不会移动。 我的树是这样的:

 Category
    Category
       Category
       Attachment
    Category
       Attachment
    Article
       Attachment
       Attachment
    Article
       Attachment
    Attachment
 Category
 Category
如果我不设置
范围
移动记录有时看不到树的结尾,并开始在其他记录类型之间移动。如何设置
范围
以避免出现这种情况

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

在保存每个模型的数据时,它还将记录保存在带有转换的i18n表中。当使用
verify
recover
检查表时,树行为仅“看到”当前模型中的帖子,也给出了“缺少的索引”,因为没有看到其他模型中的记录

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


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

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

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

有关详细信息,请参阅。

您实际上还没有提出任何问题。你在找什么帮助?您是否查看了您的数据库并确定您有一个100%有效的树,并且存在软件问题?你不知道你的数据是否有效吗?
recover()
出了什么问题?您是否尝试了它的两种
$mode
设置。第一个问题:为什么要获取每个树记录的错误?这意味着什么?(我还检查了树数据和每个字段的父项id(左、右)是否正确)第二个问题:如何确定树的范围以避免像现在这样出现错误:有时记录(不在末尾)在尝试移动时会出错,如果未设置
范围,有时会在其他记录之间移动记录(不可见)从树中,这不会修复任何问题,但会删除一些父ID,这可能是写在顶部帖子中的问题