Database 具有多类型树的CakePHP 1.3
我正在使用CakePHP1.3的TreeBehavior。在一个DB表中,我得到了所有的模型记录。每个记录都有一个存储模型名称的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
类型
字段。到目前为止,一切都很有魅力。但我在具体行动中遇到了一些错误。首先,如果我执行$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,这可能是写在顶部帖子中的问题