Php 坚持实体主义与联想主义

Php 坚持实体主义与联想主义,php,orm,doctrine,Php,Orm,Doctrine,我在尝试使用条令来保持实体与关联时遇到困难 下面是我所属方的映射:(User.php) 相反的方面没有映射,我尝试了(OneToMany),但似乎没有什么不同 基本上,我正在将默认值2(整数)传递给一个方法setRole\u id,但当我实际去持久化实体时,它显示为空,这会导致MySQL错误,因为该列不允许null 编辑1: 从字面上说,只是为了角色_id而坚持这一点 $this->user->setRole\u id(2) 干杯 Ewan您的映射似乎不正确。尝试按如下方式重写它: /**

我在尝试使用条令来保持实体与关联时遇到困难

下面是我所属方的映射:(User.php)

相反的方面没有映射,我尝试了
(OneToMany)
,但似乎没有什么不同

基本上,我正在将默认值2
(整数)
传递给一个方法
setRole\u id
,但当我实际去持久化实体时,它显示为空,这会导致MySQL错误,因为该列不允许
null

编辑1:

从字面上说,只是为了角色_id而坚持这一点

$this->user->setRole\u id(2)

干杯


Ewan

您的映射似乎不正确。尝试按如下方式重写它:

/** 
 * @ManyToOne(targetEntity="Roles\Entities\Role")
 * @JoinColumn(name="role_id", referencedColumnName="id", nullable=false)
 */
private $role;
换句话说,您只需要将
角色\u id
描述为关系的join列。您不需要将其映射为“普通”列。然后只需编写并使用如下声明的常规setter:

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

    $this->role = $role;
}
使用上述内容而不是
$this->user->setRole\u id(2)
,并持久化您的用户实体。条令应该自动为您在外键字段中存储正确的实体ID

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

    $this->role = $role;
}