2017-02-24 8 views
0

私は、1つのフォームで2つのエンティティを使用する方法を理解しようとしています。 私はUserエンティティとProfileエンティティを持っています。 User Entityのフィールドを保持するRegisterTypeクラスを作成した後、UserとProfileの間に1対1のマッピングを追加しました。今私のRegisterTypeでは、電話、住所のようなProfileEntityに関連するフィールドを持っていたいと思います。私はプロフィールエンティティのフォームビルダークラスであるprofileTypeがのインスタンスを作成しようとしたし、フォームの後に私のRegisterAction方法では、このSymfony 3 2つのエンティティの1つのフォーム

->add('profile', ProfileType::class, []) 

ようRegisterType内のそれのインスタンスを作成し、私は追加するには、次の行を追加提出しますプロファイルエンティティに関連するフィールドの関連性とデータを保存します。

$user->setProfile($form['profile']->getData()->setUser($user)); 

私はそれが好きでした。私が上記の行を持っていないと、ユーザーとプロフィールの間のマッピングが保存されないからです。私が使うはずのアプローチは何ですか?

答えて

0

ボグダン、そうです、それほど清潔ではありません。

ユーザーエンティティの設定者が行うべきであるため、あなたは自分自身でregisterActionにプロファイルを設定する必要はありません。

私はあなたのセッターはこのようになっていることはほぼ確実だ:

Class User 
{ 
    setProfile($profile) { 
     $this->profile = $profile; 
    } 
} 

しかし、それはこのようにする必要があります

Class User 
{ 
    setProfile($profile) { 
     $this->profile = $profile; 
     $profile->setUser($this); 
    } 
} 

これは、あなたが何をしたかのようにしかし、セッターは同じです:)

+0

これは良い方法であるだろう= D – Bogdan

関連する問題