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.