【发布时间】:2012-07-06 23:37:21
【问题描述】:
我在尝试从一个节点获取所有祖先时遇到了一点麻烦;
这是我的 schema.yml:
Constante:
connection: doctrine
tableName: constante
actAs:
NestedSet:
hasManyRoots: true
rootColumnName: parent_id
columns:
id:
type: integer(8)
fixed: false
unsigned: false
primary: true
autoincrement: true
parent_id:
type: integer(8)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
lft:
type: integer(8)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
rgt:
type: integer(8)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
level:
type: integer(8)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
cod_interno:
type: string(5)
fixed: false
unsigned: false
primary: false
notnull: false
autoincrement: false
nombre:
type: string(64)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
这就是我试图从一个节点(不是根节点)获取所有祖先的方式
$path = Doctrine_Core::getTable('Constante')->find($condicion); // $condicion = 57
$node = $path->getNode();
$isLeaf = $node->isLeaf(); //var_dump throws true
$ancestors = $node->getAncestors(); //var_dump throws false
$isValidNode = $node->isValidNode(); //var_dump throws true
作为$ancestors == false,我无法遍历它并获取所有祖先(我正在尝试构建一个简单的面包屑)
这是我存储在数据库中的数据,这是真实数据(仅供测试使用)
+---------++---------++---------++---------++----------++---------+
|ID ||PARENT_ID||LFT ||RGT ||LEVEL ||NOMBRE |
|---------||---------||---------||---------||----------||---------|
|56 ||56 ||1 ||4 ||0 ||COUNTRY | --> this is root
|57 ||56 ||2 ||3 ||1 ||CANADA | --> child of root
+---------++---------++---------++---------++----------++---------+
According to this如果Ancestors返回false,则表示选中的节点是根节点。
我花了几个小时寻找一个没有运气的解决方案。
如果您需要更多信息,请不要犹豫!
编辑:我在输入表格中的内容时出错了,感谢 olivierw 提醒我这一点。
【问题讨论】:
标签: php symfony-1.4 nodes doctrine-1.2 nested-sets