Active Record Отношения Родитель Потомок

Таблица пользователей содержит родителей, потомков. Как их извлекать?

Изначально мне нужно было только знать потомков родителей, потому я сделал вот такой код в модели user:




  'parent'=>array(self::HAS_ONE, 'AgencyAdvertRelations', 'parent_id', 'joinType'=>'INNER JOIN'),

  'children'=>array(self::HAS_MANY, 'User', 'childe_id', 'through'=>'parent', 'joinType'=>'INNER JOIN'),



и в компоненте его извлекал




  User::model->with('children')->FindByPk($id);



потом мне понадобилось в другом месте проверять соответствие родителю




  User::model->with('parent')->FindByPk($id);



всегда возвращал NULL

потому я переделал модель вот так:




  'parent_connector'=>array(self::HAS_ONE, 'AgencyAdvertRelations', 'parent_id', 'joinType'=>'INNER JOIN'),

  'children'=>array(self::HAS_MANY, 'User', 'childe_id', 'through'=>'parent_connector', 'joinType'=>'INNER JOIN'),


  'children_connector'=>array(self::HAS_ONE, 'AgencyAdvertRelations', 'childe_id', 'joinType'=>'INNER JOIN'),

  'parent'=>array(self::HAS_ONE, 'User', 'parent_id', 'through'=>'children_connector', 'joinType'=>'INNER JOIN'),



возникает вопрос - не костыль ли это? И если это так, то как было бы сделать это верно?