1

我的数据库中有一个自引用表,并想使用 Phalcon ORM 将其作为对象拉取。hasOne() 关系在加入其他表时有效,但在尝试引用自身时似乎无效。当试图var_dump($treeNode->TreeNodes)它返回什么。使用 XDebug 检查对象只会返回“无法评估表达式”。

有谁知道如何在 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
            )
        );
    }
}
4

1 回答 1

0

一个简单的方法是定义一个额外的关系

$this->belongsTo('tree_parent_node_id', // which column
                 'TreeNodes', // referenced table
                 'id', // referenced table column
                 ['alias' => 'parentNode']);

为避免混淆,您可以给这个关系一个别名。['alias' => 'parentNode']

现在您应该能够通过使用访问相关的父节点

$treeNode->getRelated('parentNode');

有关Phalcon 别名的更多信息。

于 2016-06-20T13:58:08.170 回答