2011-04-14 6 views
0

나는 다음과 같은 테이블을 가지고있다 : hasMany Streets hasMany Houses hasMany Flats hasMany People.CakePHP와 COUNT 매우 깊은 협회에서

저는 이제/cities/index view에 있으며 모든 도시에있는 사람들의 수를 표시하려고합니다.

내가 지금하는 일은 큰 "재귀"가 설정되어 있고 결과에 멍청한 foreach()가있는 도시의 findAll입니다.

더 좋은 방법이 있습니까?

시간과 인내심을 가져 주셔서 감사합니다.

잰 마르쿠스

답변

0

그러지 마!

미 국회 의사당에 사과하지만 나쁜 생각입니다. 대부분 DB의 데이터가 증가함에 따라 이러한 데이터는 매우 무거운 호출이 될 것입니다. SQL 로그를 보면 재귀가 0보다 크면 엔티티 각각에 대해 여러 개의 쿼리가 실행된다는 것을 알 수 있습니다.

나는 여기서 경험을 말합니다. 내가 케이크로 시작했을 때, 내 애플 리케이션은 죽음의 흰색 화면을 시작했다! 검사하자마자, 나는 기억이 부족했다.

네이티브 SQL을 사용하여 ->query() 호출을 수행하거나 여러 개의 작은 쿼리를 실행할 때마다 엔티티의 ID를 가져올 때까지 자세히 살펴볼 것을 권장합니다.

또한 궁금한 점이 있습니다. 왜 집에는 많은 아파트가 있습니까? 나는 집과 아파트가 같은 층에 있다고 생각 했을까?

안녕하세요!

+0

어쩌면 당신은 체코 공화국 (구 소련 블록)에 어떤 집이 있는지 모르실 수 있습니다. [링크] (http://en.wikipedia.org/wiki/Panelak) . 어쨌든 그것은 단지 예일뿐입니다. 실제 테이블 구조는 훨씬 더 복잡합니다. 그럼에도 불구하고 당신의 도움에 감사드립니다. –

+0

아하이오! 네, 아마도 번역을 잃어 버렸을 것입니다. 그것이 당신의 질문을 해결하면 대답을 받아 들일 것을 잊지 마십시오. 도움이되는 이유는 다음을 참조하십시오. http://meta.stackexchange.com/questions/5234 – JohnP