2011-11-10 5 views
8

私はエラーを次取得、私は私のユーザーを管理するためのFOS_UserBundleを使用しようとしていますが、毎回私はデシベルにSymfony2:FOS_Userbundle dbスキーマの更新時に定義が重複していますか?

php app/console doctrine:schema:update --force 

を更新しよう:フィールド内のエンティティの列「ユーザ名」が

重複定義をまたは弁別子列マッピング。 fosユーザーバンドル

ユーザー名をコメントアウトすると「電子メール」も発生します。

私のユーザークラスは、実際には非常に基本的なものです:

namespace My\MyBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $username; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $name; 

/** 
* @ORM\Column(type="string", length="100") 
*/ 
protected $firstname; 

/** 
* @ORM\Column(type="string", length="150") 
*/ 
protected $email; 

} 

私は何かが足りないのですか?あなたのMy\MyBundle\Entity\User

答えて

13

は、順番に、すでに$usernameフィールドを持つFOS\UserBundle\Model\Userを拡張FOS\UserBundle\Entity\Userを拡張します。また、$emailフィールドもあります。したがって、クラスから$usernameフィールドと$emailフィールドを削除するだけで済みます。

+0

よろしくお願い致します! ..初心者のために十分に深く指摘されていないものもあります。ありがとう! – Mike

+9

しかし、独自の検証グループを持つフィールドに独自のアサーションを追加する必要がある場合は、自分のユーザークラスのプロパティをもはや持っていないとどうしたらいいですか? – flu

+3

電子メールまたはユーザー名のフィールドを削除してもこのエラーが発生します。私はこの質問が古いことを知っています... –

10

FOS \ UserBundle \ Model \ Userで拡張し、FOS \ UserBundle \ Entity \ Userクラスでは拡張しないでください。エンティティではなく、モデルで常に拡張する必要があります。

+0

それはトリックですが、なぜ私はエンティティを拡張すべきではありませんか? – flu

+2

エンティティはすでにアノテーションを「含む」ためです。モデルを拡張することで、既に存在するフィールドに独自の注釈を付けることができます –

+1

この場合、すべての注釈を再定義する必要があります(誰も 'FOS \ UserBundle \ Entity \ User'から継承されません) –

2

私にとって、は、のColumn注釈を削除していました。

/** 
* @ORM\Column --> remove this line! 
*/ 
protected $password; 

あなたはBaseUserから注釈を上書きするユーザーまたはBaseUserクラスに@ORMの\のAttributeOverridesを使用することができます。 例:

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
* @AttributeOverrides({ 
*  @AttributeOverride(name="password", 
*   [email protected](
*    nullable = false, 
*    unique = true, 
*    length = 123 
*   ) 
*  ) 
* }) 
class User extends BaseUser 
{ 
... 
関連する問題