#php #doctrine-orm
#php #doctrine-orm
Вопрос:
я использую doctrine2 cli для генерации объектов.
у меня есть исходные классы, определенные в PHP с помощью docblock. когда я запускаю doctrine orm:generate-entities, создаются новые файлы — генерируются поля и создаются методы (установщики / получатели).
проблема в том, что я хочу скопировать свои собственные пользовательские методы из исходных файлов (без расширения файлов).
например: у меня есть skel Employee .php с:
class Employee {
/** comments */
public $key;
public function myCustomMethod(){
....
}
}
когда я запускаю orm: generate-entites, models Employee.php создается, но myCustomMethod() не копируется
есть ли способ скопировать пользовательские команды?
Ответ №1:
Сначала создайте свои модели / сущности в коде с помощью сопоставления аннотаций, а затем используйте orm:schema-tool:create
для создания схемы вашей базы данных, и если это не выполняется автоматически, orm:generate-proxies
.
Смотрите Примечание здесь
Однако, если вы вкладываете в сущности гораздо больше логики, вам следует воздержаться от использования генератора сущностей и закодировать свои сущности вручную.
Комментарии:
1. предполагается ли загрузить прокси-файл? или просто файл сущности? я использую code igniter и загружаю данные с помощью $this->em->find(‘models Employee’, 1);
2. Прокси генерируются Doctrine либо автоматически во время выполнения (типично для разработки), либо вручную. См . doctrine-project.org/docs/orm/2.0/en/reference /. … Прокси-серверы невидимы для вашего приложения (они расширяют ваши сущности), но по сути являются тем, что возвращает диспетчер сущностей / репозиторий
3. дело в том, что я хочу, чтобы объекты создавались автоматически, и мне нужны пользовательские методы для копирования. теперь я вижу, что они скопированы в прокси, но прокси пытается запустить parent::myCustomMethod() (parent= сгенерированный объект). он не содержит метода
4. Почему вы генерируете сущности? В документации об этом довольно ясно сказано