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