У меня есть таблица собственных ссылок в моей БД, и я хотел бы использовать ее как объект, используя 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
)
);
}
}
Простой способ добиться этого — определить дополнительные отношения
$this->belongsTo('tree_parent_node_id', // which column
'TreeNodes', // referenced table
'id', // referenced table column
['alias' => 'parentNode']);
Чтобы избежать путаницы, вы можете дать этому отношению псевдоним. ['alias' => 'parentNode']
Теперь вы сможете получить доступ к связанному родительскому узлу, используя
$treeNode->getRelated('parentNode');
Больше информации о Псевдонимы Phalcon.
Других решений пока нет …