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:
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
loadModel
O meu actionCreate ficou assim:
Agradeço a ajuda desde já... abraços!!!
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!!!