bhoo-day
(Deerawan)
June 18, 2010, 6:34am
1
Halo semuanya,
Saya masih baru nih dalam dunia persilatan Yii. Ini sebenarnya sudah diposting di forum general link tapi blum ada yg balas Siapa tau teman2 disini ada yg pernah menyelesaikan masalah ini.
Kira2 gimana ya biar bisa menampilkan nama parent di CGridView maupun di halaman View jika tabelnya seperti itu.
TABLE SPESIALIS
id_spesialis
nama_spesialis
parent_id_spesialis (refer ke id_spesialis)
Apakah perlu dibuat relasi? Relasi seperti apa ya klo kasusnya seperti itu.
Terima kasih
xicath
(Xicath)
June 18, 2010, 7:18am
2
'value'=>Spesialis::model()->findByPk($model->parent_id_spesialis)->nama_spesialis,
itu pk di tabel spesialis
atau…?
parent_id_spesialis [i](reference to id_spesialis itself)[/i]
relasi antar 2 tabel atawa 1 tabel…? ??
bhoo-day
(Deerawan)
June 18, 2010, 7:41am
3
'value'=>Spesialis::model()->findByPk($model->parent_id_spesialis)->nama_spesialis,
itu pk di tabel spesialis
atau…?
parent_id_spesialis [i](reference to id_spesialis itself)[/i]
relasi antar 2 tabel atawa 1 tabel…? ??
terima kasih mas atas penjelasannya. Ak sebenernya sudah pakai cara itu tapi yg keluar di kolom tersebut nilainya malah nilai parent-nya.
sebenernya tabel-nya cuma 1 yaitu tabel spesialis itu. Nah, klo digambarkan maka setiap spesialis punya sub spesialis dan si sub spesialis itu disimpan di tabel spesialis itu sendiri.
Nah ak bingung pas saat mo ditampilin di CGridView. CGridView kan otomatis menampilkan nilai dari parent_id_spesialis. Ak udah coba buat codingan di CGridView-nya dengan cara
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'spesialis-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id_spesialis',
'nama_spesialis',
'parent_id_spesialis',
array(
'name'=>'parent_id_spesialis',
'filter'=>CHtml::listData(Spesialis::model()->findAll(), 'id_spesialis', 'nama_spesialis'),
'value'=>Spesialis::model()->findByPk($model->parent_id_spesialis)->nama_spesialis,
),
array(
'class'=>'CButtonColumn',
),
),
)); ?>
Ak curiganya di variabel ‘name’=>‘parent_id_spesialis’ yg jadi masalahnya. Kira2 gimana ya?
Terima kasih
xicath
(Xicath)
June 18, 2010, 8:31am
4
waduh… bingungin bos…
grouping id atau gimana ?
maklum otaknya dah lemot dah sore…
'value'=>Spesialis::model()->findByPk($model->parent_id_spesialis)->nama_spesialis,
in findbypk nya bukan seharusnya id_spesialis ?
findByPk($model->id_spesialis)
nasrul
(Nasrul Hamid)
June 18, 2010, 8:50am
5
ana belum pernah customisasi CGridView, namu kalau relasi pada model SPESIALIS mungkin seperti ini:
<?php
...
public funtion relations(){
return array(
//refers to parent key
'parentItem' => array(self::BELONGS_TO, 'spesialis', 'parent_id_spesialis'),
//break down into subItems
'subItems' => array(self::HAS_MANY, 'spesialis', 'parent_id_spesialis'),
);
}
?>
kalau untuk CGridViewnya mungkin seperti ini:
<?php
...
'value'=>$model->subItems->nama_spesialis,
...
?>
semoga membantu
xicath
(Xicath)
June 18, 2010, 9:01am
6
kenapa juga di relasi in kalau fieldnya ada d tabel tersebut .
bukanya bisa langsung :
'value'=>$data->nama_spesialis,
nasrul
(Nasrul Hamid)
June 18, 2010, 9:08am
7
harusnya sih beda :?
‘value’=>$data->nama_spesialis nampilin nama spesialis untuk record tersebut,
sedangkan setelah di relasiin ‘value’=>$model->subItems->nama_spesialis nampilin nama sub-spesialisnya
kurang lebih begitu yang ana pahami. kalau ada yang luput, ana mohon maaf berhubung untuk CGridView ana kurang ilmu
wallaahu ta’ala a’laam
xicath
(Xicath)
June 18, 2010, 9:18am
8
ha ha haa,
bisa aja mas nasrul, yang paling senior di sini ko, join apr 2009 the former…
btw, itu has_many bukan berarti recordnya lebih dari satu…?
bhoo-day
(Deerawan)
June 18, 2010, 9:23am
9
hmm…menarik juga tampaknya. Ak mungkin akan coba dlu bikin relations seperti yg disarankan mas nasrul.
Sebenernya cuma mau nampilin nama spesialis parent-nya di gridview berdasarkan parent_id_spesialis yang dipunya. Jadi kira2 begini hasilnya di gridview
id spesialis | Nama Spesialis | Nama parent spesialis
1 | Hunter | Kategori Utama
2 | Hunter Keren | Hunter
3 | Hunter Mantap | Hunter
Tapi akan dicoba dulu saran2 diatas. Thx buat bro fastcrash dan bro nasrul
xicath
(Xicath)
June 18, 2010, 9:40am
10
id spesialis | Nama Spesialis | Nama parent spesialis
1 | Hunter | Kategori Utama
2 | Hunter Keren | Hunter
3 | Hunter Mantap | Hunter
hmm… klo menurutku bisa dibuat suatu fungsi berhubung datanta berupa array.
bisa jadi kaya gini :
di model:
public function parenting($parenting)
{
$result = SPESIALIS::Model()->findAll(array('condition'=>'parent_id_spesialis=\''.$parenting.'\''));
$row_parent = '';
foreach($result as $item){
$row_parent .= $item->nama_spesialis . "<br />";
}
return $row_parent;
}
di view :
array(
...
'value'=>'$data->parenting($data->parent_id_spesialis)',
...
),
semoga bisa membantu..
nasrul
(Nasrul Hamid)
June 18, 2010, 9:43am
11
hehe, former but least
buktinya ana salah persepsi kirain mau munculin subitems di kolom parent_speseialis
kalau recordnya seperti itu, ana setuju dengan mas @fastcrash .
<?php
...
'value'=>Spesialis::model()->findByPk($data->parent_id_spesialis)->nama_spesialis,
...
?>
atau jika dengan relasi, bisa pakai yang BELONGS_TO (parentItem)
<?php
...
'value'=>$data->parentItem->nama_spesialis,
...
?>
wallaahu ta’aala a’laam
bhoo-day
(Deerawan)
June 19, 2010, 12:39pm
12
Solved!
Akhirnya bisa juga berkat bantuan bro nasrul dan bro fastcrash. Yg aku lakuin adalah
...
...
...
'columns'=>array(
'id_spesialis',
'nama_spesialis',
array(
'name' => 'parent_id_spesialis',
'filter' => Spesialis::model()->findParents(), // fields from country table
'value' => 'Spesialis::model()->FindByPk($data->parent_id_spesialis)->nama_spesialis',
),
array(
'class'=>'CButtonColumn',
),
),
)); ?>
...
...
...
Ternyata bisa langsung begitu ya. Hehehe…mantap