我有 2 个具有 nn 关系的实体。参考实体有一些额外的字段,所以我必须像这样更改 3 个实体之间的关系。
User --(1-n)-- UserAddress --(n-1)-- Address
在用户实体中,我有一个到 UserAddress 的映射:
<one-to-many target-entity="UserAddress" mapped-by="user" field="addresses">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>
我的用户实体:
protected $addresses;
public function addAddress(UserAddress $address)
{
$this->addresses[] = $address;
return $this;
}
public function removeAddress(UserAddress $address)
{
$this->addresses->removeElement($address);
}
public function getAddresses()
{
return $this->addresses;
}
public function __construct()
{
$this->addresses = new ArrayCollection();
}
当我尝试通过$user->removeAddress($address)从用户地址集合中删除地址时,重新检查 $addresses 数组并且该地址已被删除。但在数据库中它仍然存在。我希望删除数据库中的 2 个字段,一个在 UserAddress 表中,一个在 Address 中。我怎样才能做到这一点?