Multi Model Transaction

Suggest a better way to implement below code


	public function actionCreate()

	{

		$model = new ProductRating;

		$ProductRatingDetail = new ProductRatingDetail;

		$Comment = new Comment;

				

				


		// UnComment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);

		$model->type = 'critic';

		if(isset($_POST['ProductRating']))

		{

			$model->attributes=$_POST['ProductRating'];

			if($model->save())

			{


				$ProductRatingDetail->product_rating_id = $model->id;


				$Comment->attributes = array(	 	 	 	 	

					'user_id'   => $model->user_id ,

					'comment'   => $_POST['Comment']['comment'],

					'>product_rating_id' => $model->id

				);


				if($ProductRatingDetail->save() and $Comment -> save())

				{

					$this->redirect(array('/ProductRatingDetails/view/'.$ProductRatingDetail->id));

				}

				else

				{

					if($ProductRatingDetail->id)

					{

						$ProductRatingDetail->delete();	

					}

					if($model->id)

					{

						$model->delete();	

					}

					if($Comment->id)

					{

						$Comment->delete();	

					}

				}

			}

		}


		$this->render('create',array(

			'model'=>$model, 'ProductRatingDetail'=> $ProductRatingDetail, 'Comment'=> $Comment

		));

	}


<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'product-rating-form',

	'enableAjaxValidation'=>false,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php //echo CHtml::errorSummary(array($model,  $Comment)); ?>


	<div class="control-group">

		<?php echo $form->labelEx($model,'user_id'); ?>

		<div class="control">

			<?php echo $form->dropDownList($model,'user_id', 

					$userSelected + CHtml::listData(User::model()->dropdown(array("critic","prouser")),'id','name','UserType.name') ,

					array('empty'=>'Select','required'=>'required')); ?>

			<?php echo $form->error($model,'user_id'); ?>

		</div>

	</div>


	<div class="control-group">

		<?php echo $form->labelEx($model,'product_id'); ?>

		<div class="control">

			<?php echo $form->dropDownList($model,'product_id', 

					CHtml::listData(Product::model()->dropdown(),'id','name'),

					array('empty'=>'Select','required'=>'required')); ?>

			<?php echo $form->error($model,'product_id'); ?>

		</div>

	</div>


	<div class="control-group">

		<?php echo $form->labelEx($model,'rate'); ?>

		<div class="control">

			<?php echo $form->dropDownList($model,'rate', range(0,10), 

					array('empty'=>'Select','required'=>'required')); ?>

			<?php echo $form->error($model,'rate'); ?>

		</div>

	</div>


	<div class="control-group">

		<?php echo $form->labelEx($model,'type'); ?>

		<div class="control">

			<?php echo $form->dropDownList($model,'type', 

					ZHtml::enumItem( $model,'type'),

					array('required'=>'required')); ?>

			<?php echo $form->error($model,'type'); ?>

		</div>

	</div>


	<div class="control-group">

		<?php echo $form->labelEx($Comment,'comment'); ?>

		<div class="control">

			<?php echo $form->textArea($Comment,'comment',array('rows'=>6, 'cols'=>50)); ?>

			<?php echo $form->error($Comment,'comment'); ?>

		</div>

	</div>


	<div class="form-actions">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save', array ('class'=>'btn btn-primary')); ?>

	</div>


<?php $this->endWidget(); ?>


</div><!-- form -->

any reply…