Navegando através dos múltiplos nós

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'),

	);

}