我在尝试使用Doctrine持有关联实体时遇到了麻烦。
这是我自己方面的映射:(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
$ this-> user-> setRole_id(2);
干杯,
伊万
答案 0 :(得分:1)
您的映射似乎不正确。尝试按如下方式重写它:
/**
* @ManyToOne(targetEntity="Roles\Entities\Role")
* @JoinColumn(name="role_id", referencedColumnName="id", nullable=false)
*/
private $role;
换句话说,您只需要将role_id
描述为您关系的加入列。您无需将其映射为“普通”列。然后编写并使用如下所示的常规setter:
public function setRole(Roles\Entities\Role $role) {
$this->role = $role;
}
使用上述代替$this->user->setRole_id(2)
并保留您的用户实体。 Doctrine应自动为您在外键字段中存储正确的实体ID。