the Doctrine Docs에 따라 기준을 설정하려고합니다.교리 2.3 기준. 관련 개체 액세스
불행히도 관련 객체의 속성에 액세스하는 방법을 알려주지 않습니다. 내가 한 가지 예를 들어 보겠다.
제품 ArrayCollection을 보유하고 있습니다. 모든 제품에는 카테고리가 있습니다. 카테고리 이름에 대한 ArrayCollection을 필터링하고 싶습니다. 지금은 다음과 같은 기준을 설정하려고 :
$criteria = Criteria::create()
->where(Criteria::expr()->eq("category.name", "SomeCategoryName"));
지금은 다음과 같은 예외가 얻을 : 나는 관련 개체에 액세스 할 수있는 방법
An exception has been thrown during the rendering of a template ("Unrecognized field: category.name")
를?
답장을 보내 주셔서 감사합니다. 나는 월요일에 당신의'Ctriteria'을 테스트 할 것입니다. 지금은 워크 스테이션에 액세스 할 수 없습니다. 작동하는지 알려 드리겠습니다. 그러나 필자의 의견으로는 필터가 좋지 않습니다. 왜냐하면 모든 범주가로드되고 디스크에서 로컬로 처리되기 때문입니다 (DB에서 수행하는 것보다 성능이 떨어지는 것은 아닐 수 있습니다). – Robin
당신이 잘못 알고 있습니다. 조건은 쿼리 (가져올 데이터)와 ArrayCollection (이미 가져온 데이터)에서 사용할 수 있습니다. fetch-join을 만들지 않았다면 criteria 나 filter()를 사용하든 상관없이 관계가 열심히로드 될 것입니다. 당신은 DB가 당신에게 최고의 성능을 제공 할 수 있도록 WHERE와 함께 fetch join을 사용하는 것이 가장 좋습니다. 그것이 당신의 질문이 아니었지만. – Flip
엔티티에 주석을 달아 게으른로드가 가능할 것이라고 생각했습니다. http : // docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-manytoone. 'ArrayCollection'을 느슨하게로드하지 않겠습니까? 또는 이것이 반대 주석이므로 작동하지 않겠습니까? – Robin