Doctrine2级联默认值

Doctrine2 cascade default value

我实际上是在学习 Symfony3,更准确地说是 Doctrine2 对象之间的关系,我想知道当你不显式时是否有 cascade 参数的默认值。

我在教程中看到需要使用未指定参数的remove值时,但没有对此进行解释。

所以我的意思是这个

/**
 * @ORM\ManyToOne(targetEntity="UTM\ForumBundle\Entity\UtmWebsiteTopics")
 * @ORM\JoinColumn(nullable=false)
 */
private $topic;

相当于那个?

/**
 * @ORM\ManyToOne(targetEntity="UTM\ForumBundle\Entity\UtmWebsiteTopics", cascade={"remove"})
 * @ORM\JoinColumn(nullable=false)
 */
private $topic;

感谢您的阅读,希望您能给我一个答案。 :D

简而言之,这两个片段并不相同。如果您想要删除通过 FK 与其他实体有关系的特定实体,则需要明确 remove() 相关实体以避免违反完整性约束。

每个例子

未定义cascade={"remove"}

public function removeEntityAction($id)
{
    // Get entity manager etc....
    $myEntity = $em->getRepository("MyEntity")->findBy(["id" => $id]);

    foreach($myEntity->getTopics() as $topic) {
        $em->remove($topic);
    }

    $em->remove($myEntity);
}

定义cascade={"remove"}

public function removeEntityAction($id)
{
    // Get entity manager etc....
    $myEntity = $em->getRepository("MyEntity")->findBy(["id" => $id]);

    $em->remove($myEntity);
}

Doctrine Cascade Operations

Doctrine - Removing Entities