我的问题是如何在不经过每个关联的情况下删除反面的实体,并手动删除它。
<?php
/** @Entity */
class User
{
// ...
/**
* @OneToMany(targetEntity="Address", mappedBy="user")
*/
private $addresses;
// ...
public function __construct() {
$this->addresses = new ArrayCollection();
}
}
/** @Entity */
class Address
{
// ...
/**
* @ManyToOne(targetEntity="User", inversedBy="features")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
// ...
}在本例中,Address是拥有方,因此我不能删除User,因为外键验证将失败。我必须先删除Address,然后再删除User。如果我有10个这样的关系,删除过程是痛苦的。
我可以创建ManyToMany关系,但这样Address实体将具有users而不是user,并且我希望地址只有一个用户。
做这件事最好的方法是什么?
发布于 2017-08-30 07:13:24
我希望它能对你有所帮助。只需将cascade添加到逆侧实体。
/** @Entity */
class User
{
// ...
/**
* @OneToMany(targetEntity="Address", mappedBy="user", cascade={"persist", "remove"})
*/
private $addresses;
// ...
public function __construct() {
$this->addresses = new ArrayCollection();
}
/*
* @return ArrayCollection
*/
public function getAddresses (){
return $this->addresses:
}
/*
* @pram Address $address
*/
public function setAddresses (Address $address){
$this->addresses->add ($address);
}
}https://stackoverflow.com/questions/40103663
复制相似问题