CakePHP模型上的树节点行为

时间:2014-02-23 18:52:58

标签: cakephp binary-tree nodes depth-first-search

我目前正在开展一个项目,我将需要在模型上创建二叉树结构。它类似于“一个人可以有两个朋友。这两个朋友中的每一个都是人,所以他们每个人也可以有两个朋友。”最后,我需要进行深度优先节点搜索。

我想进行最多4级的深度搜索,我也想知道是否有任何级别未完成,例如:

                                       person(root)

                  person(branch A)                     person(branch B)

        person             person              person             person

    person   person    person   person      (no children)     (only 1 child)person

如您所见,分支A 最多可完成4个级别。但分支B 不是。

我猜测知道哪个分支是完整的以及哪个分支不是使用empty()上的array函数进行验证,如:

$person = $this->Person->find('first', $conditions);
if(empty($person['Person']['friend_1'])) 
    $uncomplete = true;

我错过了在这里迭代节点的算法,但我真正需要的是如何检索hasOne / belongsTo的4个深度(不确定是哪一个),是不是设置Model::recursive = 4

感谢任何建议,谢谢

1 个答案:

答案 0 :(得分:0)

Cake中的

我们没有递归4.递归用于与当前表关联的关联表(其他意思是模型行为),可以在-1到2之间。

还有关于你的表格结构。请在这里阅读蛋糕文件,看看哪一个适合您的餐桌结构。在蛋糕中我们有3种模型结构。例如$ actsAs = Tree或Contaableable或Translate

看看这些问题和文章:

Reference 1

Reference 2

Reference 3