How To Display Username Of Create_User_Id & Update_User_Id ?

Hi All,

I’m trying to display username of create_user-id and update_user_id on views/user/view (CDetailView) using this:




                array(        

                    'name' => 'create_user_id',

                    'value' => CHtml::encode($model->username)

		),


                array(        

                    'name' => 'update_user_id',

                    'value' => $model->username

		), 



But both are displaying the username of the currently logged-in user and not the username of ‘create_user_id & update_user_id’ saved in database.

What am I missing?

I can easily do this if table has foreign key (views/scaffold/view) by this:




                array(        

                    'name' => 'create_user_id',

                    'value' => $model->createUser->username

		),


                array(        

                    'name' => 'update_user_id',

                    'value' => $model->updateUser->username

		),



Hi

please give us more information-code

How the $model initialized in your controller ?

Hi KonApaz,

What do you mean by (How the $model initialized in your controller ?), Sorry I’m a newbie in programming.

Anyway this is how the fields been populated from model:




<?php

abstract class ScaffRegActiveRecord extends CActiveRecord

{

	 /**

	 * Prepares create_user_id and update_user_id attributes before saving.

	 */	

	protected function beforeSave()

	{

                if(null!==Yii::app()->user)

                    $id=Yii::app()->user->id;

                else

                    $id=1;

                

                if($this->isNewRecord)

                    $this->create_user_id=$id;

                    $this->update_user_id=$id;

                    

            foreach ($this->attributes as $key => $value)                

                if (!$value)                    

                    $this->$key = NULL;                    

                                    

                return parent::beforeSave();

	}

	

	/**

	 * Attaches the timestamp behavior to update our create and update times

	 */

	public function behaviors() 

	{

		return array(

	 		'CTimestampBehavior' => array(

	 			'class' => 'zii.behaviors.CTimestampBehavior',

	 			'createAttribute' => 'create_time',

	 			'updateAttribute' => 'update_time',

				'setUpdateOnCreate' => true,

			),

	 	);

	}


}



UserController:




<?php


class UserController extends Controller

{

	/**

	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning

	 * using two-column layout. See 'protected/views/layouts/column2.php'.

	 */

	public $layout='//layouts/column2';


	/**

	 * @return array action filters

	 */

	public function filters()

	{

		return array(

			'accessControl', // perform access control for CRUD operations

			'postOnly + delete', // we only allow deletion via POST request

		);

	}


	/**

	 * Specifies the access control rules.

	 * This method is used by the 'accessControl' filter.

	 * @return array access control rules

	 */

	public function accessRules()

	{

		return array(

			array('allow',  // allow 'Admin & User' users to perform view and update actions

				'actions'=>array('view','update'),

				'roles'=>array(User::ROLES_USER),

			),

			array('allow', // allow  'Admin' users to perform index, create, admin and delete actions

				'actions'=>array('index','create','admin','delete'),

				'roles'=>array(User::ROLES_ADMIN),

			),

			array('deny',  // deny all users

				'users'=>array('*'),

			),

		);

	}


	/**

	 * Displays a particular model.

	 * @param integer $id the ID of the model to be displayed

	 */

	public function actionView($id)

	{

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

			'model'=>$this->loadModel($id),

		));

	}


	/**

	 * Creates a new model.

	 * If creation is successful, the browser will be redirected to the 'view' page.

	 */

	public function actionCreate()

	{

		$model=new User;

                $model->last_login_time = date("Y-m-d H:i:s", time());


		// Uncomment the following line if AJAX validation is needed

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


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

		{

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

			if($model->save())

                            Yii::app()->user->setFlash('success','Your Registration Is Successfull.');

				$this->redirect(array('view','id'=>$model->id));

		}


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

			'model'=>$model,

		));

	}


	/**

	 * Updates a particular model.

	 * If update is successful, the browser will be redirected to the 'view' page.

	 * @param integer $id the ID of the model to be updated

	 */

	public function actionUpdate($id)

	{

		$model=$this->loadModel($id);


		// Uncomment the following line if AJAX validation is needed

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


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

		{

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

			if($model->save())

                            Yii::app()->user->setFlash('success','Profile Updated Successfully.');

				$this->redirect(array('view','id'=>$model->id));

		}


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

			'model'=>$model,

		));

	}


	/**

	 * Deletes a particular model.

	 * If deletion is successful, the browser will be redirected to the 'admin' page.

	 * @param integer $id the ID of the model to be deleted

	 */

	public function actionDelete($id)

	{

		$this->loadModel($id)->delete();


		// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser

		if(!isset($_GET['ajax']))

			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));

	}


	/**

	 * Lists all models.

	 */

	public function actionIndex()

	{

		$dataProvider=new CActiveDataProvider('User');

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

			'dataProvider'=>$dataProvider,

		));

	}


	/**

	 * Manages all models.

	 */

	public function actionAdmin()

	{

		$model=new User('search');

		$model->unsetAttributes();  // clear any default values

		if(isset($_GET['User']))

			$model->attributes=$_GET['User'];


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

			'model'=>$model,

		));

	}


	/**

	 * Returns the data model based on the primary key given in the GET variable.

	 * If the data model is not found, an HTTP exception will be raised.

	 * @param integer $id the ID of the model to be loaded

	 * @return User the loaded model

	 * @throws CHttpException

	 */

	public function loadModel($id)

	{

		$model=User::model()->findByPk($id);

		if($model===null)

			throw new CHttpException(404,'The requested page does not exist.');

		return $model;

	}


	/**

	 * Performs the AJAX validation.

	 * @param User $model the model to be validated

	 */

	protected function performAjaxValidation($model)

	{

		if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')

		{

			echo CActiveForm::validate($model);

			Yii::app()->end();

		}

	}

}



views/view:




<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>array(

                //'id',

		'first_name',

		'middle_name',

		'last_name',

		'username',

		'email_address',

                array(        

                    'name' => 'roles_id',

                    'value' => CHtml::encode($model->getRolesText())

		),

		'last_login_time',

		'create_time',

                array(        

                    'name' => 'create_user_id',

                    'value' => <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/huh.gif' class='bbc_emoticon' alt='???' />

		),

                'update_time',

                array(        

                    'name' => 'update_user_id',

                    'value' => <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/huh.gif' class='bbc_emoticon' alt='???' />

		),         

	),

)); ?>



Hi Dave

when save a ScaffRegActive which is the current user ?

Check if the the create_user_id is the corrected in mysql table

Also post the relations method of your model.