2011-12-28 2 views
1

Репозитории Doctrine - это место, где задаются вопросы, если вы хотите поделиться ими по своему приложению.Где должна существовать логика настойчивости в Доктрине?

Полезно ли поместить логику сохранения в репозиторий, чтобы хранилища были полезны не только для запросов, но и для создания и обновления объектов?

Есть ли другое место для логики сохранения, которое не находится в самом контроллере?

ответ

3

Поместите его в service layer. В этом случае ваши контроллеры знают только уровень сервиса, но не имеют уровень репозитория. Уровень сервиса может делегировать запросы на уровень репозитория или выполнять их самостоятельно - я предпочитаю последний.

Просто простой пример:

class CommentService 
{ 
    private $em; 

    public function __construct(EntityManager $em) 
    { 
     $this->em = $em; 
    } 

    public function find($id) 
    { 
     // do a query here or delegate to a repository 
    } 

    public function findByPost(Post $post) 
    { 
     // do a query here or delegate to a repository 
    } 

    public function save(Comment $comment) 
    { 
     // exec an operation here 
    } 

    public function delete(Comment $comment) 
    { 
     // exec an operation here 
    } 
} 
+0

насчет папки-мудрой ?? У меня есть мои объекты в папке lib моего проекта Zend, как указано в документации, я должен разместить свои репозитории рядом с ними? – jere