相关联
我有2个实体:用户和爱。这是一个"一对多的,双向的"。
这是我的实体:
用户:
namespace SEUserBundleEntity;
/**
* User
*
* @ORMTable(name="user")
* @ORMEntity(repositoryClass="SEUserBundleRepositoryUserRepository")
*/
class User extends BaseUser
{
//...
/**
* One User has Many Loves.
* @ORMOneToMany(targetEntity="SECoreBundleEntityLove", mappedBy="user", cascade={"persist"})
*/
private $loves;
//...
public function __construct()
{
//...
$this->loves = new ArrayCollection();
//...
}
//...
/**
* Remove love
*
* @param SECoreBundleEntityLove $love
*/
public function removeLove(SECoreBundleEntityLove $love)
{
$this->loves->removeElement($love);
//delete love
}
//...
}
爱:
namespace SECoreBundleEntity;
/**
* Love
*
* @ORMTable(name="love")
* @ORMEntity(repositoryClass="SECoreBundleRepositoryLoveRepository")
*/
class Love
{
//...
/**
* Many Loves have One User.
* @ORMManyToOne(targetEntity="SEUserBundleEntityUser", inversedBy="loves", cascade={"persist"})
* @ORMJoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
//...
/**
* Set user
*
* @param SEUserBundleEntityUser $user
*
* @return Love
*/
public function setUser(SEUserBundleEntityUser $user = null)
{
$this->user = $user;
return $this;
}
//...
}
我的问题是:有什么方法,当我对用户执行removeLove()
时,我的数据库中相应的爱实体自动删除而无需在控制器中使用实体管理器。我希望我的控制器看起来像:
class DefaultController extends Controller
{
public function indexAction()
{
//...
$em = $this->getDoctrine()->getManager();
$user->removeLove($love);
$em->persist($user);
$em->flush();
//...
}
}
的结果是,$love
不会在$user
的getLoves()
中删除数据库的CC_3。
您可以尝试:孤儿删除选项
确保实体Love
与另一个User
没有关联。因此,一个实体Love
总是与一个User