2017-05-26 4 views
0

私は、いくつかの特性からなるクラスの都市です。@ORM Idは、symfonyのエンティティの識別子を作成しません。

/** 
* @ORM\Entity 
* @ORM\Table(name="City") 
* @SoftDeleteable(fieldName="deletedAt") 
*/ 
class City 
{ 
    use IdentifiableEntity; 
    use TimestampableEntity;  
} 

私は、問題は、私はビン/コンソール教義を実行するときに発生する

trait IdentifiableEntity { /** * @var integer * @ORM\Column(name="id", type="integer", options={"unsigned":true}) * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; //setter getter } 

IdentifiableEntity

形質を持っている:移行:デフ
私は、このエラーメッセージ

[Doctrine\ORM\Mapping\MappingException]                       
    No identifier/primary key specified for Entity "AppBundle\Entity\City\City". Every Entity must have an identifier/primary key. 

はなぜことがあり得ます?私は、$id@ORM\Idのように扱われるべきであるという私の特性を明確に述べました。 @ORM\GeneratedValue(strategy="IDENTITY")を追加しても役に立ちません。どうしましたか?

P.S. symfony 3.2とdoctrine/doctrine-migrations-bundleを使用しています。1.0

+0

あなたが別のエンティティを持っていて、間違った名前空間を指しているこの 'City'エンティティを指すアソシエーションを持つ任意のエンティティがありますか? (AppBundle \ Entity \ City \ City)< - double city –

+0

@SamJanssens、まさにこのエンティティを指す正しい名前空間です。 – user7808407

+0

特徴の中に主キーを作ることはできないようです。不思議なことに、私はそれについての情報を見つけるのに苦労しています – user7808407

答えて

0

これは、クラスCityにannotaionのない他の$ idプロパティがある場合にのみ可能です。したがって、それは特性から$ idを上書きします。 それ以外の場合は、これが正確なCityクラスであり、他の名前空間からのものではないことを確認してください。

+0

私は2番目の部分を理解していませんでしたので、もう一度尋ねます:あなたは、毎回特性からそのIDを無効にして機能させる必要があると言いますか? – user7808407

+0

彼の意味するところは、あなたのCityエンティティは$ id属性を持っていなければならず、この$ id属性はあなたの特性からの属性によって上書きされます。あなたの特性の唯一の目的がすべてのエンティティのプライマリキーとしての$ id属性を持つことであれば、それを使わないでください – OlivierC

+0

私は、あなたがidから正確に特性を取得するならば、都市クラス。 CityクラスのIDは、教義と特性のどちらよりも優先順位が高いためです。 –

関連する問題