Senhores…
Como navegar até o último nó de uma estrutura recursiva com auto-relacionamento?
PS: não há limites para os níveis. Um branch pode ter 3 níveis e outro pode ter 100.
Cordialmente,
Leonardo.
Senhores…
Como navegar até o último nó de uma estrutura recursiva com auto-relacionamento?
PS: não há limites para os níveis. Um branch pode ter 3 níveis e outro pode ter 100.
Cordialmente,
Leonardo.
Registra ele como Relation de sí mesmo e usa uma função recursiva
Eu fiz algo parecido… A tabela é tbl_assunto e entre os campos eu tenho id e assuntoPaiId. Este aponta para o id do assunto pai. A hierarquia é dado por um campo chamado ordem. Veja como ficou a função hierarquia.
public function getHierarquia()
{
$_hierarquia = '';
if (!$this->assuntoPaiId=='')
{
$_hierarquia = $this->assuntoPai->getHierarquia() . '.';
}
$_hierarquia .= sprintf('%02.0f', $this->ordem);
return $_hierarquia ;
}
E os relacionamentos…
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'assuntoPai' => array(self::BELONGS_TO, 'Assunto', 'assuntoPaiId'),
'assuntosFilhos' => array(self::HAS_MANY, 'Assunto', 'assuntoPaiId'),
);
}