0

我有 2 个实体用户和地址

用户被一对一(单向)映射到地址,两者都有 id/user_id 字段(主要),用于与 cascade=persist 和 orphanRemoval=true 连接

当我做 $user = $em->find('\Classes\User',1); $user->removeAddress(); $em->flush();

它从数据库中删除了预期的地址部分, 但是为什么它在 User 对象中将 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;
    }
}
4

0 回答 0