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 に答える