![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Hejka, mam trzy tabele:
users: id, nick, blabla messages: id, content, blabla message_users: message_id, user_id Czyli do jednej wiadomosci może byc przypisanych wielu odbiorców Na każdą tabele mam rzecz jasna model.
oraz
No i na modelu Message robie findAll. Niesety ta metoda robi mi dwa zapytania. Jedno na SELECT z messages, a drugie ne SELECT z message_users i potem łączy wyniki. Czy można tu jakoś wymusić, by ona zrobiła mi jedno zapytanie: Select ... from message left join message_users .... ? edit: na chwilę obecną rozwiązałem to przez recznie dodanie LEFT JOIN dla findAll |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Patrząc na twoje tabele, to raczej jest relacja HABTM...
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, też do tego doszedłem. Nie mniej jednak nadal przy HABTM nie pobiera mi danych jednym zapytaniem tylko kilkoma.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pokaż kod którym pobierasz dane (np. metodę find)
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
$data = $this->find('all', $options);
gdzie w options są warunki, contains itp. Probowalem już z paroma osobami prywantnie i niestety nigdy nie robi jednego zapytania. Na message_users robi oddzielne zapytanie. Takze jak juz pisalem wczesniej, do $options dodałem left join message_users i teraz dopiero mam jedno zapytanie jak chciałem. |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Tak abstrahując od problemu to lepiej by było gdybyś rozpoczął pobieranie danych z message_users i dopiero do tego dołączał messages. No ale pewnie ORM na to nie pozwoli.
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, tak właśnie normalnie bym zrobił. Niestety przerabiam gotowy kod, jest kilka podobnych Modeli korzystających z jednego mechanizmu i niestety muszę się tutaj dostosować
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pamiętam to w CakePHP dało się wymusić JOIN i wtedy szło jedno zapytanie. Ale nie było to zbyt intuicyjne korzystając z ORM...
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jak juz pisalem wymusiłem JOIN w $options dla find(). Chyba, że ty mówisz o jeszcze innym wymuszeniu
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie o to mi chodziło, nie doczytałem poprzedniego posta
Ten post edytował Riggs 24.02.2015, 13:53:52 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:20 |