[tanya] cgridview dari multi relasi

misal saya punya tabel seperti ini :

perjalanan

id

id_profil

tanggal

tujuan

profil

id

nama

id_departemen

departemen

id

departemen

saya ingin buat cgridview perjalanan seperti ini gan,

id [id perjalanan]

id_profil [nama]

id_departemen [departemen]

tanggal

tujuan

sy sudah coba buat namun id_departemen belum sesuai yang saya inginkan agar yang di tampilkan nama departemennya

id [id perjalanan]

id_profil [nama]

id_departemen [id_departemen] <-- masih tampil id

tanggal

tujuan

gimana supaya view nganbil data dari tabel departemen melalui tabel profil

bingung codingnya gan, tolong dibantu gan, thanks.

buat nampil relasi cukup nulis begini gan…


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

	'id'=>'profile-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

              'id',

              'id_profil',

              'departemen.nama', //asumsi sudah buat relations di model dengan nama 'departemen'

              'tanggal',

              'tujuan',

	),

)); ?>

ini masalahnya tabel perjalanan dan departemen gak ada relasi secara langsung, jadi cara diatas saya sudah coba dan tidak berfungsi. yang saya mau adalah memunculkan (record Departemen dari tabel departemen di view perjalanan) dimana (tabel departemen terelasi dengan tabel profil), tabel profil terelasi dengan tabel perjalanan. kira2 begitu ceritanya, mudah2an bisa di mengerti.

ow maaf ane kurang teliti, kirain dari tabel profil.

Sama saja… karena dua kotak berarti dua titik…


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

        'id'=>'perjalanan-grid',

        'dataProvider'=>$model->search(),

        'filter'=>$model,

        'columns'=>array(

              'id',

              'id_profil',

              'profil.departemen.nama', 

              'tanggal',

              'tujuan',

        ),

)); ?>



semoga nggak salah lagi…

ok gan berfungsi dengan baik thanks agan junxiong,

untuk lebih jelasnya mungkin sebaiknya saya tuliskan coding dan tujuan saya selengkapnya seperti di bawah ini :




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

	'id'=>'travel-berangkat-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		'id',

		//'id_karyawan', <-- yang saya sudah ganti dengan coding dibawah ini untuk tujuan tampilan dan pencarian data

		array(

  			'name' => 'FullName',

  			'filter' => CHtml::activeTextField($model, 'FullName'),

  			'value' => '$data->travelberangkat_employees->Full_Name'

			),


		,,,,,,,,

                // coding dibawah yang agan tadi kasih sukses 

		'travelberangkat_employees.employees_department.Department', 


                // coding di bawah ini yang saya buat sebelumnya tujuan pencarian data sukses tapi tampilan datanya masih menampilkan id_departemen, saya coba2 memodifikasinya tapi belum sukses juga. 

		array(

  				'name' => 'Department',

  				'filter' => CHtml::activeTextField($model, 'Department'),

  				'value' => '$data->travelberangkat_employees->id_department'

			),

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




demikian gan, mohon petunjuk lanjutan, saya masih belajar di PHP - MySQL - apalagi dunia framework saya sangat pemula. terima kasih 3x

maksudnya agan mau kolom "Department" tampil nama?

setau ane bisa saja sih langsung tulis begini:




<?php

...

		array(

  				'name' => 'Department',

  				'filter' => CHtml::activeTextField($model, 'Department'),

  				'value' => '$data->travelberangkat_employees->department->nama'//jadi nama

			),

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




Hanya saja, kalau dibuat jadi gitu, filternya tidak akan jalan setau saya. Biasanya saya tidak pernah pakai attribut "filter" untuk case seperti ini jadi ane kurang tahu jg…

biasa ane bakal tulis begini saja:




<?php

...

		array(

  				'name' => 'Department',

  				'value' => '$data->travelberangkat_employees->department->nama'//jadi nama

			),

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




nantinya masalah filter-memfilter itu ane setting di model…

terutama di bagian search();

mantap agan junxiong, tidak sombong dan suka menolong. sukses gan :)

saya mencoba CGridView dengan relasi , namun tabel yang terrelasi tidak keluar inputan untuk searchingnya

saya lampirkan

ini modelnya




  * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('id_user, id_bank ','required'),

			array('id_user, id_bank', 'numerical', 'integerOnly'=>true),

         

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('id, id_user , bankName.name','safe' , 'on'=>'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	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(

            'bankName'=>array(self::BELONGS_TO, 'Bank', 'id_bank'),

            'userName'=>array(self::BELONGS_TO, 'User', 'id_user'),

		);

	}


------------------------------------


public function search($id_user)

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;

        

        $criteria->compare('id',$this->id);

	    //$criteria->compare('id_bank',$this->id_bank,TRUE);

		$criteria->compare('id_user',$id_user); //$id_user);

        

		$criteria->compare('bankName.name',$this->bankName->name,TRUE);

        //$criteria->with='bankName';

        /// $criteria->addSearchCondition('bankName.name',$this->id_bank,TRUE);

    

       

		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}




dan ini viewnya





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

	'id'=>'fuser-bank-grid',

	'dataProvider'=>$model->search($id_user),

	'filter'=>$model,

	'columns'=>array(

		'id',

		'id_user',

		//'bankName.name',

		array(

                        'name'=>'bankName.name',

               

                      

                ),


		

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




bankName.name merupakan relasinya , field ini keluar datanya tapi tidak keluar searchingnya

padahal sangat di perlukan

munkin master sudah pernahh ngalaminn mohon bantuannya yahh …

Untuk bisa search kolom relasi di CGridView, agan harus tambahkan sedikit coding di bagian model khususnya fungsi search()

Ini link contohnya : http://www.yiiframework.com/forum/index.php?/topic/9083-search-filter-of-a-relations-field-through-cgridview/page__st__20__p__48586#entry48586