2011-02-15 5 views
1

Reference To This QuestionDQL을 어디에 둘까요?

어디에서 DQL 쿼리를 넣어야합니까? 서비스 클래스 또는 컨트롤러 또는 어쩌면 저장소 클래스에 있습니까?

내 질문에 대한 답변이 좋은 기사를 찾았습니다. 서비스 클래스에 넣는 것이 가장 좋은 방법이라고 생각합니다. 당신은 단지 하나의 엔티티 타입에 대한 작업을 수행하는 쿼리가있는 경우 I가 자신의 저장소 클래스를 작성하는 것이 좋습니다

:

How to integrate Doctrine 2 with your Zend Framework application

+0

거의 확실하게 컨트롤러에 없습니다. –

답변

1

이 매우 무엇을 당신의 DQLs가하고있는에 따라 달라집니다 이 엔티티. 저장소 클래스는 이미 find 및 findAll 메소드를 제공하므로 좋은 결과를 얻을 수 있습니다. Doctrine은 CLI 도구로 orm:generate-repositories을 제공합니다. Ralph Schindler는 in his example repository처럼이 방법을 사용했습니다.

당신이 그것을 넣어하는 가장 좋은 장소가 될한다 엔티티의 곱셈 종류의 서비스 레이어에 영향을 미치는 쿼리가있는 경우.

+0

위의 참조 된 질문을 살펴보면 가장 좋은 곳은 저장소라고 생각하니, 맞습니까? – Optimus

+1

예, 그렇게하겠습니다. 내 접근 방식 : 디커플링 이유로 컨트롤러가 항상 Service 클래스에 대해 말합니다. 서비스 클래스는 저장소에서 작동하고 필요한 경우 플러시됩니다. 따라서 EntityManager와 저장소 클래스 (자체에서 해결할 수 있음)의 두 가지 종속성이 있습니다. –

+1

Samuel 대단히 감사합니다! – Optimus

관련 문제