Amigos,
Seguinte, eu criei um formulário para cadastro de cliente onde o cliente seleciona se é Pessoa Física ou Pessoa Jurídica, são três tabelas (cliente, pessoa_fisica e pessoa_juridica). No diagrama de entidade-relacionamento que eu fiz coloquei fk_cliente tanto na tabela pessoa_fisica quanto na pessoa_juridica.
No modelo Cliente a relação ficou assim:
public function relations()
{
return array(
'pessoaFisicas' => array(self::HAS_ONE, 'PessoaFisica', 'fk_cliente'),
'pessoaJuridicas' => array(self::HAS_ONE, 'PessoaJuridica', 'fk_cliente'),
);
}
A parte de cadastro eu já fiz, funcionou direitinho, porém não consigo fazer a parte de update. Eu preciso alterar no meu controller Cliente o actionUpdate e o loadModel? Como fazer?
Segue abaixo como estão atualmente meu actionUpdate e o loadModel:
actionUpdate
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Cliente']))
{
$model->attributes=$_POST['Cliente'];
if($model->save())
$this->redirect(array('view','id'=>$model->id_cliente));
}
$this->render('update',array(
'model'=>$model,
));
}
loadModel
public function loadModel($id)
{
$model=Cliente::model()->findByPk((int)$id);
if($model===null)
throw new CHttpException(404,'A página solicitada não existe.');
return $model;
}
O meu actionCreate ficou assim:
public function actionCreate()
{
$model=new Cliente;
$modelPessoaFisica=new PessoaFisica;
$modelPessoaJuridica=new PessoaJuridica;
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if(isset($_POST['Cliente']))
{
$model->attributes=$_POST['Cliente'];
if($model->tipo_pessoa == "Física"){
$modelPessoaFisica->attributes=$_POST['PessoaFisica'];
$valid=$model->validate();
$valid=$modelPessoaFisica->validate() && $valid;
if($valid){
if($model->save()){
$modelPessoaFisica->fk_cliente = $model->id_cliente;
$modelPessoaFisica->save();
$this->redirect(array('view','id'=>$model->id_cliente));
}
}
}elseif($model->tipo_pessoa == "Jurídica"){
$modelPessoaJuridica->attributes=$_POST['PessoaJuridica'];
$valid=$model->validate();
$valid=$modelPessoaJuridica->validate() && $valid;
if($valid){
if($model->save()){
$modelPessoaJuridica->fk_cliente = $model->id_cliente;
$modelPessoaJuridica->save();
$this->redirect(array('view','id'=>$model->id_cliente));
}
}
}
}
$this->render('create',array(
'model'=>$model,
'modelPessoaFisica'=>$modelPessoaFisica,
'modelPessoaJuridica'=>$modelPessoaJuridica,
));
}
Agradeço a ajuda desde já… abraços!!!