Quantcast
Channel: Yii Framework Forum
Viewing all articles
Browse latest Browse all 18717

Ajuda Com Active Record Relacional

$
0
0
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!!!

Viewing all articles
Browse latest Browse all 18717

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>