![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam mam takie pytanie czy istnieje możliwość wykorzystania ORM i opcji has_many w wypadku gdy chce połączyć obiekt typu A (zapisany w tabeli A z kluczem idA) z wieloma obiektami typu B (zapisany w tabeli B z kluczem idB) korzystając z tabeli AB (posiada dwa pola, klucze zewnętrzne: idA i idB). Jeżeli tak to prosił bym o schematyczny przykład takiego zastosowania.
--- edycja -- oki znalazłem rozwiązanie na http://docs.kohanaphp.com/libraries/orm/starting Ten post edytował barthpl 14.09.2009, 17:55:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 2 Dołączył: 12.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chcesz użyć A has_many B to B musi posiadać pole A_id. Jeśli chcesz użyć koniecznie dodatkowej tabeli - w grę wchodzi tylko opcja has_and_belongs_to_many. Kohana jednak nie będzie wtedy sprawdzać, czy jeden rekord B należy do jednego rekordu A, czy do większej ilości (i na odwrót, czy A należy do (IMG:style_emoticons/default/cool.gif) - nie jest to chyba więc najlepsze rozwiązanie.
Nic nie stoi na przeszkodzie (chyba, bo nie próbowałem tak), aby zarówno A jak i B miały siebie nawzajem w has_many. Wówczas obydwie muszą mieć pole X_id. Ten post edytował laohost 14.09.2009, 17:56:14 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kohana jednak nie będzie wtedy sprawdzać, czy jeden rekord B należy do jednego rekordu A, czy do większej ilości (i na odwrót, czy A należy do (IMG:style_emoticons/default/cool.gif) Zupełnie mi to nie przeszkadza więc skorzystałem ze wspomnianego has_and_belongs_to_manyJednak problemu wcale sobie nie rozwiązałem. Pozwolę sobie na nieco szerszy opis problemu. Wspomniana tabela A niech będzie tabelą definiującą kontener natomiast tabela B definiuje boksy które można układać do kontenera. Tabela łącząca zgodnie z opisem w dokumentacji (http://docs.kohanaphp.com/libraries/orm/starting) nazywa się A_B i zawiera trzy pola: A_id, B_id oraz orderId. Klasy zdefiniowane wyglądają następująco:
oraz
i wszystkie boxy przypisane do danego kontenera wyświetlam w następujący sposób
i tu pojawia się moje pytanie jak to zmodyfikować aby kolejność elementów wyświetlanych uwzględniała pole orderId z tabeli A_B. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Miałem ten sam problem. Rozwiązanie troszkę kombinowane, ale ważne, że działa:
http://forum.kohanaphp.pl/index.php/topic,751.0.html |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:27 |