Где DQL-операторы живут в приложении, использующем Zend Framework и Doctrine? - PullRequest
1 голос
/ 12 июня 2010

В приложении, использующем Zend Framework 1.10 и Doctrine 1.2, где должны жить операторы DQL, если наше приложение построено так, что оно имеет слой Service Layer и Gateway (он же Doctrine_Table).

Кажется, что наши возможности включают в себя:

1) Размещение операторов DQL на слое Service, которое кажется слишком высоким в нашей иерархии приложений для хранения DQL.

2) Размещение операторов DQL в каждой таблице / шлюзе каждой модели, что кажется немного избыточным, поскольку нам также необходимо выставить операторы DQL, которые выполняют такие функции, как getAllUsers (), через уровень Service.

Какой из них является предпочтительным дизайном? Мы намерены максимально использовать уровень Service, чтобы другие проекты могли использовать различные части нашего приложения.

1 Ответ

1 голос
/ 12 июня 2010

В наших проектах мы помещаем большинство запросов на сервисном уровне, за исключением случаев, когда сервис вообще не требуется.

Существует также третий вариант, который вы не упомянули, то есть помещение базовых запросов в таблицу, а затем конкретизация их в сервисе:

// in the service
$q = $table->getSomeQuery();
$q->addWhere(...)
  ->findBySome('name')
  ->execute();
...
...