1

次の例のように、ドクトリン2を使用して3レベルの継承モデルを実装しようとしています。

レベル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

私は何が間違っているのですか?

4

1 に答える 1

0

注釈のname=""一部を見逃したときに、このエラーが発生しました。@ORM\DiscriminatorColumnあなたの問題は見当たりませんが、Doctrine が不平を言っているようです。

var_dump()inを使用しClassMetadataInfo::setDiscrimiatorColumnて、注釈から何が渡されているかを確認し、何が問題なのかを確認してください。

于 2012-06-26T10:49:37.127 に答える