nn 関係を持つ 2 つのエンティティがあります。参照エンティティにはいくつかの追加フィールドがあるため、このように 3 つのエンティティ間の関係を変更する必要があります。
User --(1-n)-- UserAddress --(n-1)-- Address
User エンティティには、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 テーブルに 1 つ、Address テーブルに 1 つ) を削除する予定です。どうやってやるの?