私は2つのエンティティユーザーとアドレスを持っています
ユーザーはアドレスに 1 対 1 (一方向) にマップされ、両方とも cascade=persist および orphanRemoval=true での結合に使用される id/user_id フィールド (プライマリ) を持っています
$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;
}
}