Yii Framework Forum: Relacje - automat Gii - Yii Framework Forum

Jump to content

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

Relacje - automat Gii Rate Topic: -----

#1 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 08 February 2012 - 03:47 AM

Witam.
Mam pytanie odnośnie generowania relacji przez Gii. Otóż jeżeli mam relacje wiele do wielu to używam tabeli pośredniej w której są klucze obce pochodzące z tabel które są w tej relacji. Gii dla tabeli pośredniej (tbl_spin) generuje relacje takie:

return array(
                        'pakiet' => array(self::BELONGS_TO, 'Pakiet', 'pakiet_id'),
                        'program' => array(self::BELONGS_TO, 'Program', 'program_id'),
                );


ale dla tabel źródłowych nie generuje już żadnych relacji.
Skoro taka relację trzeba rozbić na MANY_MANY i BELONGS_TO to chyba powinny być zdefiniowane relacje w tabeli źródłowej i tak dla tabeli (tbl_program)
return array('pakiety' => array(self::MANY_MANY, 'Pakiet', 'tbl_spin(program_id,pakiet_id)'),);


i tak dla tabeli (tbl_pakiet)
return array('programy' => array(self::MANY_MANY, 'Program', 'tbl_spin(program_id,pakiet_id)'),);


czy może coś poplątałem?
0

#2 User is offline   sidewinder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 218
  • Joined: 08-July 09
  • Location:Poland

Posted 08 February 2012 - 04:05 AM

Tak. Jeżeli nie zdefinujesz np. relacji w modelu tabeli pakiet, to nie będziesz miał jak wyszukać programów zawartych w danym pakiecie. I vice-versa. Pytanie dlaczego gii nie wygenerował tych relacji sam. Nie masz tam gdzieś przypadkiem kluczy złożonych?
---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
0

#3 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 08 February 2012 - 05:07 AM

Moje tabele wyglądają tak:

1. tbl_program
- id_program (int) PK
- nazwa (varchar)
- logo (varchar)
- stb (int)
- jezyk (varchar)
- temat (varchar)

2. tbl_spin (tabela łącząca tbl_program i tbl_pakiet bo tabele są w relacji wiele do wielu)
- id_spin (int) PK
- program_id (int) FK
- pakiet_id (int) FK

3. tbl_pakiet
- id_pakiet (int) PK
- nazwa (varchar)

Najpierw generuję model dla tabeli 'program' potem 'pakiet' i na końcu 'spin' no i tylko dla spin daje relacje.

Generalnie mój widok który obsługuję to dla modelu 'spin' w którym to podpiąłem informację pochodzące z tabel źródłowych wg kluczy obcych i mogę wyszukiwać które programy są w jakich pakietach oraz jakie programy zawierają dane pakiety.
Hmm...
0

#4 User is offline   Fredi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 17-January 12

Posted 10 February 2012 - 07:31 PM

Wyrzuć id_spin z tbl_spin i uczyń program_id, pakiet_id kluczem złożonym.
0

#5 User is offline   sidewinder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 218
  • Joined: 08-July 09
  • Location:Poland

Posted 11 February 2012 - 02:19 AM

Wtedy Gii nic nie wygeneruje, bo nie obsługuje kluczy złożonych.
---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
0

#6 User is offline   Fredi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 17-January 12

Posted 12 February 2012 - 09:25 AM

Nie wygeneruje nic dla tabeli pośredniej. Dla tbl_program i tbl_pakiet wygeneruje relacje wiele do wielu.
0

#7 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 13 February 2012 - 04:14 PM

Tabele i klucze są OK. Okazało się, że należy najpierw generować model dla tabeli łączącej a dopiero później dla źródłowych. Teraz relacje są wygenerowane. Dla łączącej są typu BELONGS_TO a dla źródłowych typu HAS_MANY. Tak chyba powinno być, wg przewodnika Yii:

W terminologii AR, możemy wytłumaczyć relację wiele-do-wielu jako kombinację BELONGS_TO oraz HAS_MANY

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