Yii – CGridView with Relation (Relasi)
Buat yg kesusahan untuk membuat CGridView dengan relasi antar table mungkin bisa di check step by stepnya dibawah ini :
MODELS
—————-
1. Usahakan gunakan generator GII -> CRUD untuk membuat CGridView bagi yang belum tau. setelah dibuat CRUD nya,
Pastikan relasi database sudah dibuat antar models. contoh :
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( 'namaRelasi' => array(self::BELONGS_TO, 'Classnya', 'pknya'), ); }
2. Check juga status field relasi, apakah sudah masuk kedalam aturan search ?
public function rules() { return array( // ... // The following rule is used by search(). // Please remove those attributes that should not be searched. array('field1, field2, field3, field_relasi1, field_relasi2', 'safe', 'on'=>'search'), ); }
3. Check juga kondisi pencariannya :
public function search() { $criteria=new CDbCriteria; $criteria->with=array('namaRelasi'); $criteria->compare('t.field1',$this->field1); $criteria->compare('t.field2',$this->field2); $criteria->compare('t.field3',$this->field3); $criteria->compare('namaRelasi.field_relasi1',$this->relasi1,true); $criteria->compare('namaRelasi.field_relasi2',$this->relasi2,true); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); }
VIEW
—————-
4. Rubah di tampilan columnya seperti contoh dibawah ini :
'columns'=>array( 'field1', 'field2', 'field3', array ( 'name'=>'field_relasi1', 'value'=>'$data->namaRelasi->field_relasi1', ), array ( 'name'=>'field_relasi2', 'value'=>'$data->namaRelasi->field_relasi2', ), array( 'class'=>'CButtonColumn', ), ),
Semoga dapat membantu tutorial yang saya buat.