2016-06-20 8 views
1

필자는 자신의 db에서 자체 참조 테이블을 가지고 있으며 Phalcon ORM을 사용하여 개체로 가져 오려고합니다. hasOne() 관계는 다른 테이블에 조인 할 때 작동하지만 자체를 참조하려고 할 때 작동하지 않습니다. var_dump($treeNode->TreeNodes)을 시도하면 아무 것도 반환하지 않습니다. 객체를 검사하면 XDebug를 사용하여 '표현식을 평가할 수 없습니다.'가 반환됩니다.Phalcon ORM : hasOne (self)

누구나 팔콘에서 이것을하는 방법을 알고 있습니까?

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 
      ) 
     ); 
    } 
} 

답변

0

이것을 달성하는 쉬운 방법은이 관계를 별칭을 줄 수있는 혼란을 방지하기 위해 추가로 관계를

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

을 정의하는 것입니다.

['alias' => 'parentNode'] 이제

$treeNode->getRelated('parentNode'); 

더 많은 정보에 대한 Phalcon aliases를 사용하여 관련 부모 노드에 액세스 할 수 있어야합니다.

+1

티모시 너 아름 다운 사람, 그건 완전히 작동! – JackalopeZero

+0

방을 잡아라. 당신. : P – Tpojka

+0

팔콘에서 hasOne은 주로 속한 객체에 액세스하기위한 것입니다. 예를 들어 id와 profileId가있는 admin과 id, firstName, lastName이있는 admin이 있고 admin은 belgonsTo와 profile hasOne을 사용해야합니다. – Juri