0

我在 Zend 框架中使用了学说 2.0。我有以下两个实体,它们共享它们之间的双向单对多关系。

错误表

/**
 * Bugs
 *
 * @Table(name="bugs")
 * @Entity
 */
class Bugs
{
    /**
     * @var integer $id
     *
     * @Column(name="id", type="integer")
     * @Id
     * @GeneratedValue
     */
    private $id;

    /**
     * @ManyToOne(targetEntity="Users", inversedBy="reportedBugs",cascade={"persist","remove"})
     * @JoinColumn(name="reporter_id", referencedColumnName="id")
     **/
    protected $reporter;

    public function setReporter($reporter)
    {
        $reporter->addReportedBug($this);
        $this->reporter = $reporter;
    }

用户表

/**
 * Users
 *
 * @Table(name="users")
 * @Entity
 */
class Users
{

     /**
     * @var integer $id
     *
     * @Column(name="id", type="integer")
     * @Id
     * @GeneratedValue
     */
    private $id;

    /**
     * @OneToMany(targetEntity="Bugs", mappedBy="reporter",cascade={"persist","remove"})
     * @var Bugs[]
     **/

    private $reportedBugs = null;

    public function addReportedBug($bug)
    {
        $this->reportedBugs[] = $bug;
    }

    public function __construct()
    {
        $this->reportedBugs = new \Doctrine\Common\Collections\ArrayCollection();

    }

}

您可以看到 cascade = {"remove"} 存在于关系的两侧。

Case1:现在,如果我从反面(用户)中删除一个实体,所有与该用户相关的错误都会从“错误”表中删除。这是预期的行为。

案例2:现在,如果我从拥有方(错误)中删除一个实体,则引用的用户实体将从“用户”表中删除,但是它不会将此删除级联到“错误”中该用户实体的关联实体桌子。我的意思是,就像案例 1 一样,当删除用户实体时,“错误”表中的所有相关错误都应该被删除。这是预期的结果吗?

4

0 回答 0