Doctrine 2는 자동 JOIN 생성을 지원합니까? 즉Doctrine 2의 자동 JOIN 생성
$sellers = $entityManager->getRepository('Foo\Bar\Seller')->findBy(array('country' => 'US'), array('populate' => array('Product', 'Product.Category')));
foreach ($sellers as $seller) {
doStuffWith($seller->product->category);
}
교리 제품을 결합 할 것입니다 때문에 모든 것이 단일 쿼리를 취할 것이고, 같은 일을하고, 나는 종류가 각각 일부 제품 엔티티와 연관된 판매자의 실체를 가정입니다 카테고리 테이블을 판매자 테이블에 추가하고 결과를 사용하여 연관을 미리 채 웁니다. 이게 가능한가?
DQL은 내가 자동으로 호출하는 것이 아닙니다. 열렬한 가져 오기가 유용 할 것입니다. (동적으로 활성화 할 수있을 것 같습니다 (http://readthedocs.org/docs/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#temporarily -change-fetch-mode-in-dql))하지만 이해할 수있는 한 많은 쿼리를 생성 할 것입니다. JOIN 대신 SELECT * FROM seller, SELECT * FROM 제품 어디에서 IN (...)'˙,'SELECT * FROM categories WHERE id IN (...)'여전히 다소 느리다. 또는 나는 오해가 무엇입니까? – Tgr
열정적 인 가져 오기는 내가 아는 한 최대한 빨리 JOIN을 수행해야합니다. 왜 그런 IN 쿼리를 사용하는지 알지 못합니다. –
고마워요! 이 솔루션 (관계에 대한 fetch = "EAGER")은 내 페이지 중 하나에서 쿼리 수를 111에서 9로 줄였습니다! 굉장한 솔루션. 절대 들어 본적이 없다. –