首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony Doctrine relationships删除反面的实体

Symfony Doctrine relationships删除反面的实体
EN

Stack Overflow用户
提问于 2016-10-18 16:49:58
回答 1查看 1.1K关注 0票数 1

我的问题是如何在不经过每个关联的情况下删除反面的实体,并手动删除它。

代码语言:javascript
复制
<?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,并且我希望地址只有一个用户。

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-08-30 07:13:24

我希望它能对你有所帮助。只需将cascade添加到逆侧实体。

代码语言:javascript
复制
/** @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);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40103663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档