Yii Framework Forum: Dúvida Na Utilização Do Active Record Relacional - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Dúvida Na Utilização Do Active Record Relacional Rate Topic: -----

#1 User is offline   lfbs 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-October 13

Posted 04 October 2013 - 10:21 AM

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.yiiframew...r/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.
0

#2 User is offline   alexFidelis 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 17-November 11

Posted 15 October 2013 - 03:31 PM

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
0

#3 User is offline   lfbs 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-October 13

Posted 07 January 2014 - 06:45 PM

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

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 821
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 13 January 2014 - 02:14 PM

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.yiiframew...pt/database.arr

This post has been edited by Newerton: 13 January 2014 - 02:16 PM

Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users