Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2][Symfony2]Pobieranie wartości przez sql z relacji ManyToMany
Forum PHP.pl > Forum > PHP > Frameworki
Crash89
Mam taki problem chciałbym pobrać wartości z relacji A selekcjonując ją warunkiem z relacji B. Relacje są połączone relacją Wiele do Wiele. Niestety w symfony nie można tutaj użyć tabeli pośredniej, gdyż DQL korzysta tylko z plików klas. Generalnie zapytanie, gdy istnieje klasa pośrednia działa, ale po zmianie tego na relacje ManyToMany w klasie Entity nie są pobierane odpowiednie rekordy.

Otóż, jeśli któryś z obiektów z relacji B spełnia warunek, pobierane są wszystkie obiekty z relacji A, a nie tylko te, które spełniają warunek.
Zapytanie wygląda mniej więcej tak:

  1. SELECT a.id FROM Bundle:a a JOIN Bundle:b b WHERE b.column1 < :pam1 AND b.column2 > :pam2


Gdy istniała klasa tebeli pośredniej, wszystko działało. (W entity łączyłem się z relacją pośrednią przez ManyToOne) Teraz po zmianie na ManyToMany, gdzie tabela pośrednia istnieje tylko w bazie danych, występuje powyższy błąd. Proszę, żeby ktoś napisał jak to poprawnie rozwiązać.
prz3kus
jakiej ty wersji symfony uzywasz?

Przecież co z tego że masz 2 klasy, jak zrobisz dobrego joina powstana w bazie 3 tabelki i z pobieraniem danych nie ma najmniejszego problemu.
Crash89
Problem rozwiązałem, zamiast AppBundle:b trzeba było użyć a.tablica_danych, które są zmapowane z inna tabelą.
Czyli:
  1. SELECT b.id FROM AppBundle:a a JOIN a.tablica_danych b WHERE warunek
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.