2010-10-20 4 views
1

Я только начал использовать Zend Framework и Doctrine в качестве своего ORM, и у меня есть некоторые сомнения относительно модели. Очевидно, что целью ORM является просто сопоставление модели моего домена с моделью базы данных, но мне любопытно, как вы могли бы моделировать различные отчеты, необходимые для веб-приложения?MVC + ORM, генерация отчетов

С моей точки зрения, и исправьте меня, если я ошибаюсь, я должен избегать писать какие-либо запросы в контроллере (запросы запросов запросов Doctrine в этом случае). Итак, если мне нужен какой-то произвольный отчет (например, доход на один отдел, разделенный на месяц), должен ли я иметь специальную «службу» в этой домене? Эта служба будет извлекать мой отчет из базы данных, используя запросы ORM.

Если бы вы могли пролить свет на эту тему, я был бы благодарен.

ответ

1

Конечно, иногда DQL недостаточен. В Doctrine2 вы можете расширить его. Но Doctrine 1.x не является глупым, и вы можете использовать его родной SQL: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/native-sql/en

Если ORM недостаточно, вы можете использовать собственный SQL. Отчетность - это случай, когда SQL-запросы становятся сложными для любого простого QL, который вы можете создать. Итак ... Я говорю, что нужно искать собственные запросы, если вы не можете этого избежать. Но сохраните Доктрину для всего остального.

+0

Спасибо. Но как сделать модель? Должен ли я иметь услугу, например? ReportGenerator, с методом getRevenueByDepartment()? Какова наилучшая практика в этом отношении? – Dario

+0

Я не знаю вашу структуру приложения. Наличие модели для «отчетов» является слишком широкой интерпретацией проблемы. В области, в которой я работаю, каждый отчет слишком уникален, чтобы инкапсулировать его в некоторую модель, поэтому я просто использую их как разные объекты. Для меня нет оснований, что у них должно быть что-то общее или на самом деле «модель». Кроме того, отчеты представляют собой своего рода «только для чтения» модели. Они модели для вас вообще? –

Смежные вопросы