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??
Page 1 of 1
[Resolvido] Relacionamento Muitos Pra Muitos
#2
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.
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.
#3
Posted 11 January 2013 - 09:27 AM
eestevao, 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.
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?
#4
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..
Fazendo o vínculo..
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...
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...
Share this topic:
Page 1 of 1

Help












