pemisi masta-masta,
sy mau nanya gimana caranya menampilkan data di cgridview dari 2 model??
jadi cuma buka salah satu viewnya kita bisa liat data dari kedua model…
maklum masi nubi…
mohon pencerahannya!!
pemisi masta-masta,
sy mau nanya gimana caranya menampilkan data di cgridview dari 2 model??
jadi cuma buka salah satu viewnya kita bisa liat data dari kedua model…
maklum masi nubi…
mohon pencerahannya!!
Model yang berelasi di definisikan di relastion…
kemudian di view… ditampilkan saja…!
trimakasih sudah menjawab,
sy coba uraikan permasalahannya lebih lengkap…
ada 3 tabel, pengguna(id_pengguna,username,paswd),
agenda(id_agenda,id_pengguna,waktu,rincian)
agenda_terima(id_penerima, id_agenda).
pengguna bisa membuat agenda dan mengirimkan ke beberapa pengguna sekaligus,
sy menggabungkan 2 model dan 1 form untk input data,
setelah kesimpan ke masing-masing model, sy mau coba menampilkan datanya di cgridview melalui view satu model saja dengan join kedua tabel itu…
kira2 kalo sql-nya begini:
select * from agenda a,
where a.id_agenda=t.id_agenda AND a.id_pengguna=t.idpenerima
from agenda a, agenda_terima t
tp bingung gmn cara implementasinya di YII;
ada yang bisa membantu???
coba baca-baca dulu artikel disini Guide
ini lumayan sering ditanyain,
coba diubek2 dulu deh
ini coding yang sudah saya coba, referensinya dari http://www.kaskus.us/showthread.php?t=5611940&page=8 :
controller
public function actionAdmin()
{
//$criteria=new CDbCriteria;
$model=new AgendaTerima('search');
//data at first, default data with condition :
$merge=new CDbCriteria;
$merge->condition = 'agenda.id_pembuat = t.id_penerima';
$merge->join = 'JOIN agenda ON agenda.id_agenda = t.id_agenda';
//if any filter in gridview
if(isset($_GET['AgendaTerima']))
{
$model->attributes=$_GET['AgendaTerima'];
$model->id_penerima = Yii::app()->user->getId();
$merge->condition = 'agenda.id_pembuat = t.id_penerima';
$merge->join = 'JOIN agenda ON agenda.id_agenda = t.id_agenda';
}
$this->render('admin',array(
'model'=>$model,
'merge'=>$merge,
));
}
model
public function search($merge=null)
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('t.id_agenda',$this->id_agenda,true);
$criteria->compare('id_ag_terima',$this->id_ag_terima);
$criteria->compare('id_penerima',$this->id_penerima);
//$criteria->compare('id_agenda',$this->id_agenda);
$criteria->compare('status',$this->status);
if($merge!==null)
$criteria->mergeWith($merge);
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
));
}
view
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'agenda-terima-grid',
'dataProvider'=>$model->search($merge),
'filter'=>$model,
'columns'=>array(
'id_ag_terima',
'id_penerima',
'id_agenda',
array(
'name' =>'rincian',//dari tabel relasi agenda
'value'=> '$data->rincian'//colom rincian, tapi error AgendaTerima.rincian is not defined.
),
'status',
array(
'class'=>'CButtonColumn',
),
),
)); ?>
CException:
Property "AgendaTerima.rincian" is not defined.
ada petunjuk atau saran?
saya coba membantu, semoga dapat berguna. data yang diberikan merupakan ilustrasi dan percobaan yang saya lakukan.
DB
relasi antara tbl_category dan tbl_channel didefinisikan di model Channel
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(
'categories' => array(self::BELONGS_TO, 'Category', 'id_category'),
// 'itemchannels' => array(self::HAS_MANY, 'Itemchannel', 'id_channel'),
);
}
pada views->channel->admin.php ditampilkan sebagai berikut
view
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'channel-grid',
'dataProvider'=>$model->search(),
//'filter'=>$model,
'columns'=>array(
'id',
'id_category',
array(
'name'=>'categories.name', // "nama relasi.nama kolom pada database"
'type'=>'raw',
'value'=>'$data->categories->name', //menampilkan record dari kolom name pada tbl_category.
),
'name',
'image_file',
'add_date',
'link',
array(
'class'=>'CButtonColumn',
),
),
)); ?>