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.
<?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,
));
}
?>
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"