2011-12-22 2 views
1

sfPropelORMPlugin을 사용합니다. 웹 페이지 당 하나의 개체를 조작하면 Lazyload가 정상입니다. 하지만 수 백개의 DB 쿼리가 있다면 수백 가지가 있습니다. lazyload를 완전히 비활성화하거나 특히 무거운 페이지에서 필요한 열에 대해 비활성화하려면 지금까지 방법을 찾을 수 없습니다.Symfony에서 런타임시 모델 lazyloadness를 변경하는 방법?

답변

0

로드하려는 열을 설정할 수 있도록 피어에 추가 된 유틸리티 메소드. 이 유형의 DB 쿼리에 "의사 열 (pseudo columns)"사용. 또한이 "마크 업"을 이해하기 위해 재정의 hydrate()를 사용했습니다. 심포니가 데이터를 수화 시켰음에도 불구하고 심포니가 그것을 이해하지 못하고 의도 한대로 사용하지 못한다는 것을 알기 전까지는 모두 좋았습니다.

사이트가 부하가 높기 때문에 PS 참여가 옵션으로 고려되지 않았습니다.

1

쿼리를 작성할 때 join 모든 관계를 사용해야 만 모든 데이터를 단일 쿼리로 얻을 수 있습니다. 참고 : joinWithRelation()을 사용해야합니다. 여기서 Relation은 관련된 테이블 이름입니다.

0

윌리엄 듀 런드 (William Durand)의 대답을 상세히 설명하면 아마도 관계 함수와 관련된 모든 객체를 미리로드해야하는 Propel 함수 doSelectjoinAll()을 살펴 봐야 할 것입니다. 메모리와 관련하여 비용이 많이들 수 있음을 명심하십시오.

또 다른 기술은 필요한 조인을 사용하여 사용자 지정 조건을 만든 다음 수동 수화물 기법을 사용하여 기본 개체에 추가하는 것입니다. 필자가 필요로하는 데이터가 집계 또는 개체에 정확히 매핑되지 않은 다른 열을 사용하는 경우이 작업을 자주 수행합니다. 주위에 많은 hydrate() 예제가 있습니다.

관련 문제