Id Zamiast Name

Posiadam 4 tabele

[list=1]

[*]User

[*]Pupil

[*]PupilHasUser

[*]PupilGroup

[/list]

Wszelkie informację wyświetlam w tabeli pupilHasUser. Chciałbym w ramach tego zamiast ID w view.php wyświetlić pupilGroupTitle. Jak powinienem to zrobić ? Czy związane jest to z http://www.yiiframework.com/doc/guide/1.1/pl/database.arr#relacyjne-zapytania-z-nazwanymi-podzbiorami ?? Próbowałem tego użyć ale wyskakiwały błędy.

Pupil model:


public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

                        'pupilGroupPupilGroup' => array(self::BELONGS_TO, 'PupilGroup', 'pupil_group_pupilGroupId'),

			

			'pupilHasUsers' => array(self::HAS_MANY, 'PupilHasUser', 'pupil_pupilId'),

		);

	}

Pupil group model:


public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

			'pupils' => array(self::HAS_MANY, 'Pupil', 'pupil_group_pupilGroupId'),

                        

		);

	}

PupilHasUser model:


public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

			'pupilPupil' => array(self::BELONGS_TO, 'Pupil', 'pupil_pupilId'),

                        

			'userUser' => array(self::BELONGS_TO, 'User', 'user_userId'),


                      'PupilGroup'=>array(self::HAS_ONE,'PupilGroup',array('pupil_group_pupilGroupId'=>'pupilGroupId'),'through'=>'pupilPupil'),

		);

	}

PupilHasUser view.php:


<div class="flash-notice">Dane ucznia.</div>

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

	'data'=>$model,

	'attributes'=>array(

                array(

                    'name'=>'pupilPupil.fullname',),              

                array(

                    'name'=>'pupilPupil.status',),              

                array(

                    'name'=>'pupilPupil.genre',),

                array(

                    'name'=>'pupilPupil.birth_date',),

                array(

                    'name'=>'pupilPupil.start_time',),

                array(

                    'name'=>'pupilPupil.end_time',),

                array(

                    'name'=>'pupilPupil.pupil_group_pupilGroupId',),

)); ?>

Do modelu PupilHasUser spróbuj dodać relację:




'PupilGroup'=>array(self::HAS_ONE,'PupilGroup',array('pupil_group_pupilGroupId'=>'pupilGroupId'),'through'=>'Pupil'),



a w widoku wyświetl normalnie PupilGroup.PupilGroupTitle

Niestety nie wykrywa tych wartości podstawionych. Daje ‘Not Set’.

Przy


'name'=>'PupilGroup.pupilGroupTitle',

wyświetla poprawną nazwę attributeLabels() ale wartość nie idzie.


<?php 

$ninja = $model->pupil_pupilId;   

$criteria=new CDbCriteria;

$criteria->addCondition("pupilId = $ninja");

$group=  Pupil::model()->findAll($criteria);

$good_data = array();

           foreach($group AS $user)

                {

                    $good_data[$user->pupilId] = $user->pupil_group_pupilGroupId;                                   

                }

(int)$good_data = implode(',',$good_data);

//echo $good_data;

$id = $good_data;

$hey = PupilGroup::model()->findByPk((int)$id);

echo $hey->pupilGroupTitle;

?>

and in CDetailView:


array(

                    'name'=>'pupilPupil.pupil_group_pupilGroupId',

                    'value'=>$hey->pupilGroupTitle,

),

Udało się.