Dúvida Na Utilização Do Active Record Relacional

Bom dia,

Sou novo no Yii e estou tendo dificuldades com a utilização de Active Record Relacional.

Minha base de dados consiste de dois relacionamentos muitos para muitos e estou tentando obter a informação destas tabelas, mas sem sucesso. Tentei os dois métodos descrito em http://www.yiiframework.com/doc/guide/1.1/pt_br/database.arr.

O que acontece:

A técnica do lazy loading me traz um erro "Trying to get property of non-object", enquanto o método "eager loading" tenho obtido sempre a tabela principal, que chamo de "tbl_produtos", mas sem conseguir obter a informação da tabela categorias.

Para resumir, vou colocar apenas o dado de categorias.

O Banco de Dados:




Tabela de produtos = nome da tabela '[b]tbl_produtos[/b]'

Pk = id_produtos

Colunas = 'nome_produto'


Tabela intermediária '[b]tbl_categorias_dos_produtos[/b]'

pk = id_categoriadosprodutos

fk1 = tbl_produtos_id_produtos (relacionamento com tbl_produtos)

fk2 = tbl_categorias_id_categorias (relacionamento com tabela categorias)


Tabela categorias '[b]tbl_categorias[/b]'

pk=id_categorias

Colunas = 'categorias'



AR




abstract class BaseProdutos extends GxActiveRecord {

public function relations() {

		return array(

						'categoriasDosProdutoses' => array(self::HAS_MANY, 'CategoriasDosProdutos', 'tbl_produtos_id_produtos'),

                    'atalhocategorias'=>array(self::MANY_MANY, 'Categorias', 'tbl_categorias_dos_produtos(tbl_produtos_id_produtos,tbl_categorias_id_categorias)'),

                    

		);

	}}




index view (lazy loading)




<?php

 

     $OsItens1= Produtos::model()->findAll();

     $OsItens2=$OsItens1->atalhocategorias;

     foreach ( $OsItens2 as $meuitenss){

        

       echo "<pre>";print_r($meuitenss->getAttributes());echo"</pre>";


 }

 ?>



index view (eager loading)




<?php

 

     $OsItens2= Produtos::model()->with('atalhocategorias')->findAll();;

       foreach ( $OsItens2 as $meuitenss){

      

       echo "<pre>";print_r($meuitenss->getAttributes());echo"</pre>";


 }

 ?>



Agradeço antecipadamente qualquer ajuda que possam me dar.

eu faria assim:

Na tabela intermediária usaria um relacionamento tipo BELONG_TO




//AR na tabela intermediária:

'pertenceACategoria' = self::BELONG_TO, categorias, tbl_categorias_id_categorias.


//controller e view

$model = Produtos::findByPk((int)id_produtos)


foreach($model->categoriasDosProdutoses as $cat{

   echo $cat->pertenceACategoria->categorias

}




*não testei o código, mas é alguma coisa assim

Obrigado,

Mas iniciei o projeto do zero, pois não consegui uma solução.

lfbs,

Sabe me dizer que no banco de dados foram criadas as FK ou você ta querendo criar na mão mesmo?

Tanto o Gii e o Giix, eles geram o relations() automático para você.

Faça o teste ae, se não de certo, vamos fazer manualmente mesmo as relações.


Se tiver dificuldade com relationamentos, segue abaixo um link explicando como fazer.

http://www.yiiframework.com/doc/guide/1.1/pt/database.arr