설명, 이름 등이 다른 언어로 저장된 제품을 다른 테이블에 저장했습니다. 하나의 제품은 여러 번역 (제품 데이터)을 가질 수 있습니다. 많은 언어가있는 경우Symofny2 Query 빌더 leftJoin with many relationships
는 현재 전 제품의 모든 번역을 얻을 로케일에 따라 필요한 번역을 얻을 수있는 foreach는 및 IFS을 ...주기는
내가 원하는 ... 크고 못생긴된다 로캘에 따라 쿼리에서 필요한 변환 데이터 만 가져옵니다. 나는이 쿼리를하고있는 중이 야하지만 그것은 작동하지 않습니다
$query = $this->createQueryBuilder('p')
->select([
'p',
'pt',
'lang',
])
->leftJoin('p.translations', 'pt', 'with', 'pt.language.iso = :locale')
->leftJoin('pt.language', 'lang')
->where("p.status = 1")
->SetParameter('locale', $locale)
->add('orderBy','p.position ASC');
return $query->getQuery()->getResult();
이 내가 시도 옵션 중 하나이며 나는이 내가 솔루션에 도착 가장 가까운 생각하지만, 나는 오류 얻을 :
[Semantical Error] line 0, col 281 near 'iso = :locale': Error: Class Mp\ShopBundle\Entity\ProductLanguageData has no field or association named language.iso
을
오류가이 모든 것을 말하지만,이 문제를 해결하는 방법을 이해할 수 없습니다. 어떤 도움이 절실히 받아 들여질 것입니다.
먼저 제품을 선택하고 왼쪽 결합 대신 번역에 참여해야합니다. LeftJoin은 번역이없는 경우에도 제품을 제공합니다. – Rawburner