Я недавно интегрированные Doctrine 2 в мое приложение ZF, используя метод представил здесь:Zend Framework модели и Doctrine 2 Entities
http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/
мне очень нравится, как она работает, но я запутался маленький бот о том, как это повлияет на то, как я использовал свои модели и мапперы.
Позвольте мне объяснить путаницу на примере,
Допустим, у нас есть объекты пользователей и покупки, как в примере, приведенном в ZendCast
Сейчас у меня есть эти сущности, что доктрина использует
/library/ZC/Entity
User.php
Purchase.php
Прежде чем я имел обыкновение иметь
application/models/
User.php (Application_Model_User)
Purchase.php (Application_Model_Purchase)
в C lasses in application/models/Я использовал для написания функций для действий над сущностями (принцип тонкого контроллера модели Fat), например, если бы я хотел отправить электронное письмо пользователю, я бы создал метод с именем sendMail в Application_Model_User.
Теперь я не уверен, могу ли я добавлять методы к файлам в/library/ZC/Entity, или если это хорошая идея вообще, поскольку Doctrine использует эти файлы для управления базой данных.
У меня есть отдельный файл модели, у меня также были файлы карт, которые работали над более чем одной моделью, например, если бы я хотел отправить по электронной почте всех неактивных пользователей, я бы создал метод emailInactiveUsers для Application_Model_UserMapper.
Как мне это сделать сейчас?
я гугл немного, и я нашел это:
Это говорит
инструмента строительных лесов, называемые Doctrine_Cli, что создает модель из базы данных очень быстро
Однако команда "generate-models-db" не существует в моем файле scripts/doctrine.php. Я не уверен, что это то, что Doctrine прекратила поддерживать в версии 2 или что.
Спасибо, но я пытаюсь выяснить, куда идут мои методы модели. Возможно, mailInactiveUsers был неправильным примером, поскольку он не должен принадлежать к модели, предположим, что у вас есть функция, которую нужно добавить в Модель, вы создаете отдельные модели или используете тот же класс, который вы создали для своих объектов Doctrine 2? – Yasser1984
Просто использование сущностей является обычным явлением, поскольку это, по сути, то, что ваши классы-модели в ZF. Вы можете ассоциациям работать с объектами, которые связаны между собой, например. сделайте что-то вроде '$ user-> getPurchaseHistory()' для получения всех покупок, принадлежащих пользователю. Если вы хотите получить несколько пользователей по определенным критериям, вы можете создать собственный класс репозитория, в котором вы указываете необходимые запросы или просто их создаете (например, в своем контроллере) через QueryBuilder, извлеченный из EntityManager. – dbrumann
Что я сделал, так это то, что я создал объекты, которые я сохраняю в/application/models, и он отлично работает с результатом. Спасибо – Yasser1984