1

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

我在教程中看到需要使用未指定参数的删除值,但没有关于这个事实的解释。

所以我的意思是这是

/**
 * @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

4

1 回答 1

1

简而言之,这两个片段并不相同。如果要删除通过 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);
}

学说级联操作

教义 - 移除实体

于 2017-07-29T17:21:21.847 回答