Действительно ли мне нужно самостоятельно перемещать / записывать сущности с помощью Doctrine 2? - PullRequest
1 голос
/ 07 марта 2011

Я пишу свои сущности, скажем, модели / папки.

что-то вроде:

namespace Organisation\User;
/**
 @Entity
*/
class Customer {

/**
* @Column(type="integer") @GeneratedValue
*/
protected $_id;
}

}

Так что я создам свою сущность с помощью $customer = new \Organisation\User\Customer();

Хорошо, но если я использую doctrine orm:generate-entities library/, он сгенерирует его в следующем каталоге:

library/Organisation/User/Customer.php

И это нормально, но если я посмотрю на код, там нетмоей аннотации, и, следовательно, когда я пытаюсь ее использовать, я получаю doctrine\ORM\Mapping\MappingException: Class Organisation\User\Customer is not a valid entity or mapped super class., потому что нет никаких аннотаций.

Так что мне нужно сделать, это удалить пространство имен, сгенерировать в тот же каталог, что исущности с метаданными, перейдите в папку моей библиотеки и добавьте пространство имен для работы.

Это выглядит ужасно, я что-то пропустил?

edit : Я забыл сказать, что orm: generate-entity не работает рекурсивно, поэтому я даже не могу использовать свою фактическую структуру в метаданных моих сущностей

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Используйте аргумент --generate-annotations.

0 голосов
/ 07 марта 2011

Если вы уже написали свои классы сущностей, почему вы пытаетесь их сгенерировать?

Они типичный способ управления новым проектом - написать аннотированные классы сущностей и использовать orm:schema-tool:create для генерацииваша схема базы данных.

Большинство примеров, которые я видел, помещают сущности в библиотеку /, в некоторый вложенный каталог на основе имени класса в пространстве имен, как вы уже описали.Как правило, это хорошо, так как работает со стандартными настройками автозагрузчика Doctrine2.

Если вы не пытаетесь встроить Doctrine2 в уже существующую схему базы данных, я бы порекомендовал вам просто прикрепить всю вашу сущностьфайлы классов где-то вроде библиотеки // Entity / .php, и используйте orm:schema-tool:update и orm:schematool:update для управления базой данных за вас.

...