Implementando o padrão composite

Senhores(as),

Saudações a todos.

Estou utilizando o padrão composite para montar uma estrutura hierárquica de menus.

A princípio tenho uma tabela, que reflete bem meu objeto, chamada componente com a seguinte configuração:

[sql]CREATE TABLE IF NOT EXISTS componente (

id INT NOT NULL AUTO_INCREMENT ,

titulo VARCHAR(45) NULL ,

id_componente INT NULL ,

PRIMARY KEY (id) ,

INDEX id_componente_fk (id_componente ASC) ,

CONSTRAINT id_componente_fk

FOREIGN KEY (`id_componente` )


REFERENCES `componente` (`id` )


ON DELETE NO ACTION


ON UPDATE NO ACTION)[/sql]

Como podem ver, ela tem um auto-relacionamento um para muitos (ou HAS_MANY) onde um nó aponta para outro nó e assim sucessivamente.

Como implementar a navegação desta estrutura da raiz ao último nó?

Alguem poderia me ajudar?

O que vc está se referindo extamente quando fala de navegação??

Das duas uma:

  • Monta o menu com recursão (mais facil, porém pode estourar se a quantidade for muito grande)

  • monta o menu a partir de uma implementaçao de árvore (mais dificil, porem garantida)

Sim, mas, como?

Tem algum exemplo que você possa me enviar?

Preciso navegar pelos objetos e montar uma estrutura (no meu caso um array para ser usado no CTreeView) da raiz até a última folha, compreende?

creio que pode te ajudar:

http://code.google.com/p/yiiext/source/browse/trunk/app/extensions/yiiext/behaviors/model/trees/readme_en.txt

Valeu Flávio!

Basicamente é isso.

Vou dar uma olhada mais aprofundada e retorno ao forum.

Quem souber de outra solução, fico grato se postar.

Cordialmente,

Leonardo.

Só para dar um retorno.

Dei uma olhada nesta solução. Meu modelo, neste momento, não comporta a estrutura proposta pela extensão.

Mas, é uma solução que irei testar e retornarei os resultados ao fórum.