Inserção em tabelas multiplas

Olá pessoal,

Recentemente comecei a usar O Yii e estou com uma dúvida sobre Inserção nas tabelas do banco de dados.

a partir de um controlador, eu insiro um registro em uma 1ª tabela e preciso inserir um registro em uma outra 2ª tabela usando a PK recém criada da 1ª tabela. O problema é que a inserção na segunda tabela não está acontecendo.

Para cada modelo há um controlador, referente a cada uma das tabelas do BD.

Ao tentar inserir o registro na segunda tabela, eu devo instanciar um modelo dessa tabela e gerar o insert diretamente ou devo instanciar o controlador referente a essa tabela para só aí, instanciar o modelo e inserir o registro?

abaixo segue como está o método

public function actionCreate()

{


	$modelQuestao=new Questoes;


	        		


	// Uncomment the following line if AJAX validation is needed


	// $this->performAjaxValidation($model);


    


	$modelQuestao-> DateIns = date('d/m/Y');


	$modelQuestao-> DateUpdt = date('d/m/Y');


		


	// deve-se definir um array com as variáveis e suas respectivas configurações


	


	if(isset($_POST['Questoes']))


	{			


		if($modelQuestao->save())


		{					


			// logo em seguida deve-se salvar as variáveis da questão							





			$modelVariaveis->attributes = $this->getVariaveis();


			


			$modelVariaveis->save();							


							


			$this->redirect(array('view','id'=>$modelQuestao->IdQuestao));


			


		}			


	}					


		


	$this->render('create',array(


		'model'=>$modelQuestao,


	));


}

O sistema não está conseguindo salvar as variáveis da questão.

Trata-se de um método para salvar questões com variáveis cujo valor varia a cada select no BD.

Até,

Randson

Veja como ficaria seu código:







<?php


public function actionCreate()

{

	$modelQuestao=new Questoes;

	$modelVariaveis=new Variaveis;


	// Uncomment the following line if AJAX validation is needed

	// $this->performAjaxValidation($model);

	

	$modelQuestao->DateIns = date('d/m/Y');

	$modelQuestao->DateUpdt = date('d/m/Y');

		

	// deve-se definir um array com as variáveis e suas respectivas configurações

	

	if(isset($_POST['Questoes']))

	{            

		$modelQuestao->attributes = $_POST['Questoes'];

		$modelVariaveis->attributes = $this->getVariaveis();

		

		// Verifica se os modelos são válidos

		$valido=$modelQuestao->validate();

		$valido=$modelVariaveis->validate() && $valido;

		

		if($valido)

		{

			$modelQuestao->save(false);

			$modelVariaveis->suaChaveEstrangeira = $modelQuestao->IdQuestao; 

			$modelVariaveis->save(false);


			$this->redirect(array('view','id'=>$modelQuestao->IdQuestao));

		}

	}

	$this->render('create',array(

		'modelQuestao'=>$modelQuestao,

		'modelVariaveis'=>$modelVariaveis,

	));

}


?>




Mas recomendo fortemente usar a extensão: [color="#ff0000"]https://github.com/y...elated-behavior[/color]

[b]

[/b]

[b]

[/b]

Abs.

Muito obrigado, Wanderson.

Isso ajudou a resolver parte do problema.

Gostaria de saber se é permitido instanciar um controlador a partir de outro. Fiz isso aqui mas deu erro. O yii não permite isso, fato ou é necessário fazer alguma configuração?

A partir do controlador QuestoesController instanciei o controlador Variaveis e apareceu a seguinte mensagem:

"include(VariaveisController.php) []: failed to open stream: No such file or directory"

Obrigado,

Randson

Os Controllers são classes, logo é sim possível instanciá-los, porém isso não faz muito sentido e considero errado ser feito.

O ideal é que se pense em alguma outra forma de se fazer, ou então, enviar uma nova chamada para este novo controlador.

De que forma estás tentando fazer?