Cześć
piszę sobie coś w Symfony 4 z Doctrine i mam taką sytuację, że optymalniej wydaje mi się napisać zapytanie samemu przy użyciu query buildera, niż zdać się na automatyczne wyciąganie. Są dwie encje, które trzeba połączyć po to, aby wyjąć dane z 3 tabeli - w sumie to nieistotne teraz. Mam klasę repozytorium encji i w jednej z metod kod:
$this->createQueryBuilder('u') .... ->select('u.id') ->getQuery() ->getResult();
Hm, a co z ->select("u") ?
Ok, jest to jakis krok, nie sądziłem, że to aż tak proste. Z tym że nie rozwiązuje do końca mojego problemu, bo w drugim zapytaniu mam jeszcze joina i tam potrzebuję wybrać to co jest pod relacją jako encję tej relacji.
this->createQueryBuilder('om') ->join('om.user', 'u', http://www.php.net/join::WITH, 'om.u_id = 5') ->select('u') ->getQuery() ->getResult();
powinno pomoc select('om, u'),
Faktycznie, zadziałało, z tym że niepotrzebnie dodatkowo wyciąga wtedy dane om, robi ich tablicę i dopiero na każdym om trzeba wywołać metodę, aby dostać u. O tyle dobrze, że wszystko idzie w jednym zapytaniu.
Znalazłem przed chwilą jeszcze radę, aby dodać drugą encję jako ->from('encja', 'u') + odpowiedni warunek łączący jak przy joinie i wtedy w select można dać samo 'u' i działa.
Dzięki za pomoc
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)