Yii Framework Forum: [Resolvido] Relacionamento Muitos Pra Muitos - Yii Framework Forum

Jump to content

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

[Resolvido] Relacionamento Muitos Pra Muitos Rate Topic: -----

#1 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 08 January 2013 - 08:44 AM

Estou precisado de uma ajuda para gravar dados em uma tabela com relacionamento muitos para muitos.
Vou tentar explicar como faço:
Tenho a TABELA_A,TABELA_REL a TABELA_B

TABALA_A TABELA_REL TABELA_B
ID ID_A ID
NOME ID_B ITEM_1
ENDERECO ITEM_2

Fiz da seguinte forma:
Quando o formulario é carregado ele cria os campos somente para gravar a TABELA_A. Após salvar os dados, actionCreate TABELA_A, faço um render do arquivo update e ai sim será mostrado os itens TABELA_B. Gravo os itens com um actionAdditem em uma janela modal. O preblema é como gravar na TABELA_REL o ID_B??
0

#2 User is offline   eestevao 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 05-July 12

Posted 11 January 2013 - 08:14 AM

A TABELA_REL é uma tabela de ligação da TABELA_A com a TABELA_B?

Por que não salva os dados da TABELA_REL no mesmo momento em que for salvar os dados da TABELA_B? armazena ID_A no form da TABELA_B e utiliza no momento de salvar os dados da TABELA_B e salva os TABELA_REL.
0

#3 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 11 January 2013 - 09:27 AM

View Posteestevao, on 11 January 2013 - 08:14 AM, said:

A TABELA_REL é uma tabela de ligação da TABELA_A com a TABELA_B?

Por que não salva os dados da TABELA_REL no mesmo momento em que for salvar os dados da TABELA_B? armazena ID_A no form da TABELA_B e utiliza no momento de salvar os dados da TABELA_B e salva os TABELA_REL.



O que não estou conseguindo entender é como conseguir o ID_B para salvar na TABELA_REL.
Só se depois de salvar a TABELA_B eu fizer uma pesquisa pelo ID na TABELA_B. Mas será que a integridade destes dados ficaria boa?
0

#4 User is offline   eestevao 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 05-July 12

Posted 11 January 2013 - 10:36 AM

Vou usar uns exemplos de código para ficar mais claro...não sei se é a melhor saída mas é a que uso aqui..

Se na controller que salva os dados da TABELA_B
tiver algo assim
Exemplo de um código salvando TABELA_B apenas..
public function actionCreate()
	{
		$model=new Tabela_B;

		// Uncomment the following line if AJAX validation is needed
		 $this->performAjaxValidation($model);

		if(isset($_POST['Tabela_B']))
		{
                    
			$model->attributes=$_POST['Tabela_B'];
			if($model->save())
				$this->redirect(array('admin','id'=>$model->id));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}



Fazendo o vínculo..

public function actionCreate()
	{
		$model=new Tabela_B;

		// Uncomment the following line if AJAX validation is needed
		 $this->performAjaxValidation($model);

		if(isset($_POST['Tabela_B']))
		{
                    
			$model->attributes=$_POST['Tabela_B'];
			if($model->save())
                         {
                            $modelRel=new Tabela_REL;
                            $modelRel->id_A=$_POST['Tabela_A']['id'];
                            $modelRel->id_B=$model->id;
                               if($modelRel->save())
                               $this->redirect(array('admin','id'=>$model->id));
                         }
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}


Não sei se deu para entender...mas se salvou ok os dados do B antes de finalizar tudo, cria um novo objeto da Tabela_REL e salva os dados..

No exemplo usei o AR do yii,mas a ideia é a mesma...recomendo também um commit e rollback e um try e catch para ficar mais confiável...
0

#5 User is offline   Jjunior 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 07-November 12

Posted 13 January 2013 - 02:12 PM

ok obrigado
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