2014-03-03 115 views
0

我在嘗試堅持使用學說與聯繫的實體時遇到了問題。堅持實體與學說聯盟

這裏是我的擁有方的映射:(user.php的)

/** @Role_id @Column(type="integer") nullable=false */ 
private $role_id; 

/** 
* @ManyToOne(targetEntity="Roles\Entities\Role") 
* @JoinColumn(name="role_id", referencedColumnName="id") 
*/ 
private $role; 

有一個在逆側沒有映射關係,我試着用(OneToMany),它似乎並沒有有所作爲。

基本上,我路過的2 (integer)一個默認值的方法setRole_id但它顯示爲空白,當我真正去堅持這會導致MySQL錯誤作爲列不允許nulls的實體。

編輯1:

字面上只是持續此爲ROLE_ID

$這 - >用戶> setRole_id(2);

乾杯,

伊萬

回答

1

你的映射似乎不正確。嘗試如下重寫一遍:

/** 
* @ManyToOne(targetEntity="Roles\Entities\Role") 
* @JoinColumn(name="role_id", referencedColumnName="id", nullable=false) 
*/ 
private $role; 

換句話說,你只需要描述role_id爲你們的關係的連接列。您不需要將其映射爲「正常」列。然後,只需編寫和使用常規的制定者宣佈類似下面:

public function setRole(Roles\Entities\Role $role) { 

    $this->role = $role; 
} 

使用上述代替$this->user->setRole_id(2),堅持你的用戶實體。學說應自動處理爲您存儲正確的實體ID在外鍵領域。