MVC untuk relasi MANY_MANY

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:

[sql]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%’[/sql]

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 …

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

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)

);

}

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 [color="#8B0000"]#nasrul[/color] ahlinya… ;D

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')

);

}

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?

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.

Kebetulan cuman ada 3 field statis bukan dinamis…

Terima kasih atas bantuan Mas #Lingga dan Mas #fastcrash

Sama2 bro :D