2017-02-24 65 views
0

我想弄清楚如何在一個表單中使用兩個實體。 我有用戶實體和配置文件實體。我創建了一個RegisterType類,該類包含用戶實體的字段,之後我在用戶和配置文件之間添加了一對一映射。現在在我的RegisterType中,我想要有與ProfileEntity相關的字段,如電話,地址。我試圖創建ProfileType的實例,這對檔案實體表單生成器類,然後創建它的一個實例RegisterType內這樣Symfony 3 2實體一個表格

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

在我registerAction方式表單提交後添加以下行添加關係並保存與Profile實體相關的字段的數據。

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

我這樣做是因爲如果我沒有上面的行它不會保存用戶和配置文件之間的映射。我應該使用什麼方法?

回答

0

Bogdan,你說得對,它不是很乾淨。

您不需要在registerAction中自己設置配置文件,因爲它應該由用戶實體中的setter完成。

我幾乎可以肯定,你的二傳手是這樣的:

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

但必須是這樣的:

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

這是一樣的,你做了什麼,但在二傳手:)

+0

yeap that would a better way = D – Bogdan