2012-05-28 2 views
1

Я пытаюсь реализовать модель наследования три уровня с доктриной 2, как в следующем примере:doctrine2 три уровня модель наследования в Symfony2

Уровень 1 объект:

/** 
* @ORM\Entity 
* @ORM\InheritanceType("JOINED") 
* @ORM\DiscriminatorColumn(name="discr", type="string", length=50) 
* @ORM\DiscriminatorMap({"Factura"="Factura", "NotaEntrega"="NotaEntrega", "Giro"="Giro", "FacturaNormal"="FacturaNormal", "FacturaPeriodica"="FacturaPeriodica"}) 
*/ 
class Cobro { ... } 

Уровень 2 объекта:

/** 
* @ORM\Entity 
*/ 
class Factura extends Cobro { ... } 

Уровень 3 лицо:

/** 
* @ORM\Entity 
*/ 
class FacturaNormal extends Factura { ... } 

Но когда я пытаюсь создать методы получения и установки для объекта «Factura» ...

php app/console doctrine:generate:entities MiAlarma/FacturaBundle/Entity/Factura 

Я получаю следующее сообщение об ошибке:

Fatal error: Call to undefined method Doctrine\ORM\Mapping\MappingException::nameIsMandatoryForDiscriminatorColumns() in /var/www/sf5/vendor/doctrine/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php on line 1944 

Что я делаю неправильно?

ответ

0

У меня была эта ошибка, когда я пропустил часть name="" из аннотации @ORM\DiscriminatorColumn. Я не вижу никаких проблем с тобой, но это похоже на то, о чем жалуется Доктрина.

Попробуйте использовать var_dump() в ClassMetadataInfo::setDiscrimiatorColumn, чтобы увидеть, что передается из ваших комментариев, чтобы узнать, что не так.

+0

Спасибо за ваш ответ. Некоторое время назад я нашел источник проблемы, но забыл обновить сообщение. Я не помню точно, что было не так, но я помню, что это было что-то глупое, что не имеет ничего общего с кодом. Показанный здесь код работает отлично. Думаю, я должен удалить вопрос. Спасибо, в любом случае –