$products = $qb->select('p') ->from('MainBundle:Product', 'p') ->leftJoin('MainBundle:Version', 'v', 'WITH', 'p.id = v.product_id') ->where('p.deleted_at IS NULL') ->andWhere('v.deleted_at IS NULL') ->groupBy('p.id') ->getQuery() ->getResult(Query::HYDRATE_OBJECT) ;
Jeżeli wszystkie wersje są usunięte, to produkt nie zostanie wyświetlony, z kolei jeśli usunę warunek nałożony na wersje, to zostanie wyświetlony wraz z wersjami usuniętymi, co też nie powinno się zdarzyć. Początkowo oczekiwałem, że niespełnienie warunku przy drugiej tabeli zadziała tak, jakby nie było w niej dopasowania (wstawi nulle), tylko że to dopasowanie jest, ale niespełnienie warunku powoduje niepobranie całego rekordu. Myślałem o tym, żeby pobierać same produkty, a dopiero w Twigu nałożyć warunek "if version.deleted_at is null", ale z tego co czytałem powinno się unikać tego typu rozwiązań, gdyż wtedy kierowane są za każdym razem nowe, osobne zapytania do bazy ( do każdej wersji).
Co można poradzić?