Yii Framework Forum: MVC untuk relasi MANY_MANY - Yii Framework Forum

Jump to content

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

MVC untuk relasi MANY_MANY Relasi untuk MANY_MANY Rate Topic: -----

#1 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 02 March 2010 - 05:06 AM

Mohon bantuan dari rekan2 sekalian bagaimana untuk ActiveRecord yang menggunakan relasi MANY_MANY.

Misal saya memiliki tabel
List
id (PK) 
title 
addedDate  

Item
id (PK) 
title  

ListItem
listId (PK, FK) 
itemId (PK, FK)


Dan saya ingin menampilkan data sesuai dengan query seperti ini:
SELECT l.*, i.* FROM Item AS i 
JOIN ListItem AS li ON li.itemId = i.id 
JOIN List AS l ON li.listId = l.id 
WHERE i.title LIKE '%city%'


Mohon bantuannya bagaimana mebuat relations() untuk tables diatas.
Apakah perlu tiga model atau cukup dua model saja?
Kalo bisa penjelasannya detail untuk MVC kasus diatas, soalnya saya masih newbie ...
0

#2 User is offline   Kazel 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 02-March 10

Posted 02 March 2010 - 08:41 PM

Kalo gini gimana???

model\Item.php
...

public function relations()
	{
		return array(
		'list_rel'=>array(self::MANY_MANY,'List','ListItem(itemId,listId)')
		);
	}
...




views\site\index.php

<?
$cri = new CDbCriteria();
$cri->condition="list_rel.title !=''";
$query=Item::model()->with('list_rel')->findall($cri);
echo "<table><tr><th>ITEM ID</th><th>ITEM TITLE</th><th>LIST TITLE</th><th>LIST ADDED DATE</th></tr>";
foreach($query AS $query):
foreach($query->list_rel AS $q2) $l_title=$q2->title;
foreach($query->list_rel AS $q2) $l_ad=$q2->addedDate;
echo "
	<tr><td>$query->id</td><td>$query->title</td><td>$l_title</td><td>$l_ad</td></tr>
     ";
		endforeach;
echo "</table>";
?>



0

#3 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 03 March 2010 - 03:21 AM

View PostKazel, on 02 March 2010 - 08:41 PM, said:

Kalo gini gimana???

model\Item.php
...

public function relations()
	{
		return array(
		'list_rel'=>array(self::MANY_MANY,'List','ListItem(itemId,listId)')
		);
	}
...




views\site\index.php

<?
$cri = new CDbCriteria();
$cri->condition="list_rel.title !=''";
$query=Item::model()->with('list_rel')->findall($cri);
echo "<table><tr><th>ITEM ID</th><th>ITEM TITLE</th><th>LIST TITLE</th><th>LIST ADDED DATE</th></tr>";
foreach($query AS $query):
foreach($query->list_rel AS $q2) $l_title=$q2->title;
foreach($query->list_rel AS $q2) $l_ad=$q2->addedDate;
echo "
	<tr><td>$query->id</td><td>$query->title</td><td>$l_title</td><td>$l_ad</td></tr>
     ";
		endforeach;
echo "</table>";
?>





Makasih ya bos buat bantuannya ...
Saya coba dulu ya ... :D
0

#4 User is offline   ariefpriyadi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-June 10
  • Location:Kenjeran-Surabaya

Posted 26 September 2010 - 09:22 PM

Selamat pagi,
Mohon bantuan. saya memiliki tabel berikut
TabelA
Contact City1 City2 City3
AAA     1     2     3
BBB     2     2     1

Tabel B
IDCity CityName
1      Surabaya
2      Semarang
3      Jakarta


Saya ingin menampilkan output berikut:
Contact City1    City2     City3
AAA     Surabaya Semarang  Jakarta
BBB     Semarang Semarang  Surabaya

Mohon bantuan solusi relasi MVC nya
arief.kenjeran.net
0

#5 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 26 September 2010 - 10:00 PM

View Postariefpriyadi, on 26 September 2010 - 09:22 PM, said:

Selamat pagi,
Mohon bantuan. saya memiliki tabel berikut
TabelA
Contact City1 City2 City3
AAA     1     2     3
BBB     2     2     1

Tabel B
IDCity CityName
1      Surabaya
2      Semarang
3      Jakarta


Saya ingin menampilkan output berikut:
Contact City1    City2     City3
AAA     Surabaya Semarang  Jakarta
BBB     Semarang Semarang  Surabaya

Mohon bantuan solusi relasi MVC nya


mungkin bisa make cara seperti ini:

/* pada Model A */
public function relations() {
return array(
'City1' => array('B', 'City1),
'City2' => array('B', 'City2),
'City3' => array('B', 'City3)
);
}

0

#6 User is offline   fastcrash 

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

Posted 26 September 2010 - 10:18 PM

View Postariefpriyadi, on 26 September 2010 - 09:22 PM, said:

Selamat pagi,
Mohon bantuan. saya memiliki tabel berikut
TabelA
Contact City1 City2 City3
AAA     1     2     3
BBB     2     2     1

Tabel B
IDCity CityName
1      Surabaya
2      Semarang
3      Jakarta


Saya ingin menampilkan output berikut:
Contact City1    City2     City3
AAA     Surabaya Semarang  Jakarta
BBB     Semarang Semarang  Surabaya

Mohon bantuan solusi relasi MVC nya



Sori, apa ga salah, ko di tabel A ga ada PK nya?
apa ka ribet ntar ke depannya?

dan jg biasanya ga perlu sampe 3 field gitu dgn merujuk FK yang sama, cukup satu field saja, well that's my opinion.

ID Contact ID_City
1    AAA      3
2    BBB      5
1    CCC      1
2    BBB      3


Biasanya yg kya2x gini, mas #nasrul ahlinya.. ;D
0

#7 User is offline   ariefpriyadi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-June 10
  • Location:Kenjeran-Surabaya

Posted 27 September 2010 - 12:06 AM

View PostAngga Lingga, on 26 September 2010 - 10:00 PM, said:

mungkin bisa make cara seperti ini:

/* pada Model A */
public function relations() {
return array(
'City1' => array('B', 'City1),
'City2' => array('B', 'City2),
'City3' => array('B', 'City3)
);
}



Ada error
"It must specify the relation type, the related active record class and the foreign key."
Bukannya format relasi seperti ini ??
'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)

arief.kenjeran.net
0

#8 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 27 September 2010 - 12:24 AM

View Postariefpriyadi, on 27 September 2010 - 12:06 AM, said:

Ada error
"It must specify the relation type, the related active record class and the foreign key."
Bukannya format relasi seperti ini ??
'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)



Oh ya :D sori ada ketinggalan tadi ... Maaf

/* pada Model A */
public function relations() {
return array(
'City1' => array(self::BELONGS_TO, 'B', 'City1'),
'City2' => array(self::BELONGS_TO, 'B', 'City2'),
'City3' => array(self::BELONGS_TO, 'B', 'City3')
);
}

0

#9 User is offline   ariefpriyadi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-June 10
  • Location:Kenjeran-Surabaya

Posted 27 September 2010 - 12:32 AM

View Postfastcrash, on 26 September 2010 - 10:18 PM, said:

Sori, apa ga salah, ko di tabel A ga ada PK nya?
apa ka ribet ntar ke depannya?

dan jg biasanya ga perlu sampe 3 field gitu dgn merujuk FK yang sama, cukup satu field saja, well that's my opinion.

ID Contact ID_City
1    AAA      3
2    BBB      5
1    CCC      1
2    BBB      3


Biasanya yg kya2x gini, mas #nasrul ahlinya.. ;D

wah mumpung ada boz fastcrash yg replay..
iya memang untuk Contact ada ContactID.. maaf kelewatan :D .
Tapi untuk struktur tabel saya dituntut untuk seperti model seperti itu..
jadi beberapa field merujuk ke FK yg sama.
Pengennya sih saya pakai model milik mas fastcrash..
ada solusi?
arief.kenjeran.net
0

#10 User is offline   fastcrash 

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

Posted 27 September 2010 - 01:09 AM

Ok, brarti klo satu contact nanti ada yg punya 6 city atau lebih, bisa repot.
karna city ini sifatnya dynamic. kecuali kalo fixed, memang 3 saja untuk msng2x setiap kontak.

klo memang fixed kya-nya cara mas lingga sudah bener. itu klo mo pake AR.
tp klo mo langsung mungkin bisa pake fungsi IN(cit1, city2, city3) di mysql query.

:)
0

#11 User is offline   ariefpriyadi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 08-June 10
  • Location:Kenjeran-Surabaya

Posted 29 September 2010 - 03:10 AM

View Postfastcrash, on 27 September 2010 - 01:09 AM, said:

Ok, brarti klo satu contact nanti ada yg punya 6 city atau lebih, bisa repot.
karna city ini sifatnya dynamic. kecuali kalo fixed, memang 3 saja untuk msng2x setiap kontak.

klo memang fixed kya-nya cara mas lingga sudah bener. itu klo mo pake AR.
tp klo mo langsung mungkin bisa pake fungsi IN(cit1, city2, city3) di mysql query.

:)


OK. Mantab.. sudah solve. Posted Image
Kebetulan cuman ada 3 field statis bukan dinamis..
Terima kasih atas bantuan Mas #Lingga dan Mas #fastcrash
arief.kenjeran.net
0

#12 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 29 September 2010 - 04:05 AM

View Postariefpriyadi, on 29 September 2010 - 03:10 AM, said:

OK. Mantab.. sudah solve. Posted Image
Kebetulan cuman ada 3 field statis bukan dinamis..
Terima kasih atas bantuan Mas #Lingga dan Mas #fastcrash


Sama2 bro :D
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