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);
}
我实际上是在学习 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);
}