2

健康分野の患者の研究に使用する Web アプリケーションを作成しているので、すべてのユーザーを完全に匿名にしたいと考えています。たとえば、バンドル内のユーザー クラスに何かを行うなど、バンドル内のものを書き換えずに、簡単な方法で email フィールドと email_canonical フィールドを取り除くことはできますか?

編集:私はこれをしました:

/**

*   @ORM\Column(nullable=true)

**/

protected $email;



/**

*   @ORM\Column(nullable=true)

**/

protected $emailCanonical; 

私のユーザーエンティティクラスで。しかし、php app/console doctrine:schema:update --force を実行すると、

[Doctrine\ORM\Mapping\MappingException] フィールドまたは識別子の列マッピングで、
エンティティ 'Pan100\MoodLogBundle\Entity\User' の列 'email' の定義が重複しています。

編集 2: これは FOUserBundle のモデル クラス User を BaseUser として拡張するクラスで行われると言うのを忘れていました...

4

1 に答える 1

10

わかった!

やった:

...
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @ORM\AttributeOverrides({
*              @ORM\AttributeOverride(name="email", column=@ORM\Column(nullable=true)),
*              @ORM\AttributeOverride(name="emailCanonical", column=@ORM\Column(nullable=true, unique=false))
*  
* })  
*/

class User extends BaseUser
{

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

    protected $id;
...(code emitted)

さらに必要かどうかは後でわかります。おそらく、ユーザーを作成するためにいくつかの FOSUserBundle メソッドをオーバーライドする必要があります。少なくとも「php app/console fos:user:create testuser」コマンドにはメールが必要です...しかし、もう一意である必要はないので、後で邪魔された場合は、文字列「none」などを追加するだけです。 ..

于 2013-03-01T18:12:00.080 に答える