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',
),
),
)); ?>