Yii Framework Forum: Relasi ke Tabel yg Sama - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Relasi ke Tabel yg Sama Rate Topic: -----

#1 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 18 June 2010 - 01:34 AM

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
0

#2 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 18 June 2010 - 02:18 AM

'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..? ?? ??? :blink:
0

#3 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 18 June 2010 - 02:41 AM

View Postfastcrash, on 18 June 2010 - 02:18 AM, said:

'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..? ?? ??? :blink:


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 :)
0

#4 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 18 June 2010 - 03:31 AM

waduh.. bingungin bos.. :lol:

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)


???
0

#5 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 18 June 2010 - 03:50 AM

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 :)
0

#6 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 18 June 2010 - 04:01 AM

kenapa juga di relasi in kalau fieldnya ada d tabel tersebut . Posted Image

bukanya bisa langsung :
'value'=>$data->nama_spesialis,

0

#7 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 18 June 2010 - 04:08 AM

View Postfastcrash, on 18 June 2010 - 04:01 AM, said:

kenapa juga di relasi in kalau fieldnya ada d tabel tersebut . Posted Image

bukanya bisa langsung :
'value'=>$data->nama_spesialis,


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 :D
wallaahu ta'ala a'laam
0

#8 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 18 June 2010 - 04:18 AM

Quote

kurang lebih begitu yang ana pahami. kalau ada yang luput, ana mohon maaf berhubung untuk CGridView ana kurang ilmu :D

ha ha haa,
bisa aja mas nasrul, yang paling senior di sini ko, join apr 2009 ;D the former..

btw, itu has_many bukan berarti recordnya lebih dari satu..?
0

#9 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 18 June 2010 - 04:23 AM

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
0

#10 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 18 June 2010 - 04:40 AM

Quote

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..



0

#11 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 18 June 2010 - 04:43 AM

hehe,, former but least :lol:
buktinya ana salah persepsi kirain mau munculin subitems di kolom parent_speseialis :P

kalau recordnya seperti itu, ana setuju dengan mas @fastcrash. :D
<?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
0

#12 User is offline   bhoo-day 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 10

Posted 19 June 2010 - 07:39 AM

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
0

#13 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 20 June 2010 - 10:15 PM

sip.. :lol:
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users