Olá pessoal, retornando ao assunto. Estou com dificuldades de conseguir faze funcionar isso.
Tenho as seguintes tabelas:
Tabela (menu_n1) `id` INT(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(100) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`destaque` ENUM('S','N') NOT NULL,
`meta_descricao` VARCHAR(255) NOT NULL,
`meta_palavras` TEXT NOT NULL,
`ativo` ENUM('S','N') NOT NULL,
`posicao_n1` INT(11) NOT NULL,
`title` VARCHAR(255)
PRIMARY KEY (`id`),
Tebela (menu_n2) `id` INT(11) NOT NULL AUTO_INCREMENT,
`menu_n1_id` INT(11) NOT NULL,
`nome` VARCHAR(100) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`destaque` ENUM('S','N') NOT NULL,
`meta_descricao` VARCHAR(255) NOT NULL,
`meta_palavras` TEXT NOT NULL,
`ativo` ENUM('S','N') NOT NULL,
`posicao_n2` INT(11) NOT NULL,
`title` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
Tabela (noticias) `id` INT(11) NOT NULL AUTO_INCREMENT,
`layout` INT(11) DEFAULT NULL,
`menu_n2_id` INT(11) DEFAULT NULL,
`titulo` VARCHAR(100) DEFAULT NULL,
`subtitulo` VARCHAR(250) DEFAULT NULL,
`conteudo` LONGTEXT,
`autor` VARCHAR(100) DEFAULT NULL,
`imagem` VARCHAR(100) DEFAULT NULL,
`data_hora` DATETIME DEFAULT NULL,
`status_noticia` ENUM('S','N') DEFAULT NULL,
`views` BIGINT(20) DEFAULT NULL,
PRIMARY KEY (`id`),
Model MenuN1var $useTable = 'menu_n1';
var $hasMany = 'MenuN2';
Model MenuN2var $useTable = 'menu_n2';
var $belongsTo = 'MenuN1';
var $hasMany = 'Noticias';
Model Noticiavar $belongsTo = array('MenuN2');
var $actAs = array('Containable');
No caso fiz como Vinícius falou mas não vem a slug do menu_n1 de jeito nenhum.
$this->Noticia->contain('MenuN2', 'MenuN2.MenuN1', 'MenuN2.MenuN1.MenuN1');
Vasculhei os exemplos em
http://book.cakephp.org/pt/view/474/Containable mas não ví nada relacionando 3 tabelas.
Já até pensei em fazer uma query mas deve existir a maneira certa de se fazer isso.
Onde estou errando? Alguém tem exemplos ou passou por alguma necessida igual a minha e pode me ajudar?
Obrigado.