Doctrine 原则2,一对一关联,在添加/删除相关实体时更新一个实体中的主键

Doctrine 原则2,一对一关联,在添加/删除相关实体时更新一个实体中的主键,doctrine,doctrine-orm,Doctrine,Doctrine Orm,我有两个实体 用户和地址 用户被一对一(单向)映射到地址, 两者都有用于联接的id/user\u id字段(主) cascade=persist,orphan=true 当我这样做的时候 $user=$em->find('\Classes\user',1); $user->removeAddress(); $em->flush() 它从数据库中删除预期的地址部分, 但为什么它会将用户对象中的id值更新为null /** * @Entity */ class User { /** @I

我有两个实体 用户和地址

用户被一对一(单向)映射到地址, 两者都有用于联接的id/user\u id字段(主) cascade=persist,orphan=true

当我这样做的时候 $user=$em->find('\Classes\user',1); $user->removeAddress(); $em->flush()

它从数据库中删除预期的地址部分, 但为什么它会将用户对象中的id值更新为null

/**
 * @Entity
 */
class User
{
    /** @Id @Column(type="integer") @GeneratedValue */
    private $id;
    /** @Column(length=100) */
    public $name;

    /** @OneToOne(targetEntity="Address", orphanRemoval=true) 
     * @JoinColumn(name="id", referencedColumnName="user_id")
     */
    public $address;

    public function removeAddress()
    {
        unset($this->address);
    }
}

/**
 * @Entity
 */
class Address
{
    /** @Id @Column(type="integer") */
    public $user_id;

    /** @Column(length=100) */
    public $street_name;

    public function __construct($id, $name) {
    $this->id = $id;
    $this->name = $name;
    }
}

如果您添加相关关系/关联的完整代码,这会有所帮助。您希望确切发生什么?如果地址记录被删除,它将不再被用户表引用是的,但它正在将用户对象中的id更新为null,这也是需要保留的用户对象的主键