Phalcon ORM: hasOne(self)
Phalcon ORM: hasOne(self)
我的数据库中有一个自引用 table,我想使用 Phalcon ORM 将其作为对象提取。 hasOne() 关系在加入其他 table 时起作用,但在尝试引用自身时似乎不起作用。当试图 var_dump($treeNode->TreeNodes)
它 returns 什么都没有。使用 XDebug 检查对象 returns 'Cannot evaluate expression'。
有谁知道如何在 Phalcon 中执行此操作?
public function organisationAction()
{
$organisation = new Organisations();
$organisation->setConnectionService(Registry::setConnection(Connections::UK_Connection));
$organisation = $organisation->findFirst(123);
$treeNodes = $organisation->TreeNodes;
foreach($treeNodes as $treeNode){
var_dump($treeNode->TreeNodes);
}
}
class TreeNodes extends Model
{
public $node_id;
public $tree_id;
public $tree_parent_node_id;
public $tree_level_id;
public $node_desc;
public function getSource()
{
return "TreeNodes";
}
public function initialize()
{
$this->setSource("TreeNodes");
$this->hasOne(
'tree_parent_node_id',
'TreeNodes',
'node_id',
array(
'reusable' => true
)
);
}
}
实现此目的的一种简单方法是定义附加关系
$this->belongsTo('tree_parent_node_id', // which column
'TreeNodes', // referenced table
'id', // referenced table column
['alias' => 'parentNode']);
为避免混淆,您可以为该关系起一个别名。 ['alias' => 'parentNode']
现在您应该可以使用
访问相关的父节点了
$treeNode->getRelated('parentNode');
有关 Phalcon aliases 的更多信息。
我的数据库中有一个自引用 table,我想使用 Phalcon ORM 将其作为对象提取。 hasOne() 关系在加入其他 table 时起作用,但在尝试引用自身时似乎不起作用。当试图 var_dump($treeNode->TreeNodes)
它 returns 什么都没有。使用 XDebug 检查对象 returns 'Cannot evaluate expression'。
有谁知道如何在 Phalcon 中执行此操作?
public function organisationAction()
{
$organisation = new Organisations();
$organisation->setConnectionService(Registry::setConnection(Connections::UK_Connection));
$organisation = $organisation->findFirst(123);
$treeNodes = $organisation->TreeNodes;
foreach($treeNodes as $treeNode){
var_dump($treeNode->TreeNodes);
}
}
class TreeNodes extends Model
{
public $node_id;
public $tree_id;
public $tree_parent_node_id;
public $tree_level_id;
public $node_desc;
public function getSource()
{
return "TreeNodes";
}
public function initialize()
{
$this->setSource("TreeNodes");
$this->hasOne(
'tree_parent_node_id',
'TreeNodes',
'node_id',
array(
'reusable' => true
)
);
}
}
实现此目的的一种简单方法是定义附加关系
$this->belongsTo('tree_parent_node_id', // which column
'TreeNodes', // referenced table
'id', // referenced table column
['alias' => 'parentNode']);
为避免混淆,您可以为该关系起一个别名。 ['alias' => 'parentNode']
现在您应该可以使用
访问相关的父节点了$treeNode->getRelated('parentNode');
有关 Phalcon aliases 的更多信息。