如何在Doctrine2中实现'onDeleteCascade”?

Mary-Kate Olsen
发布: 2024-11-03 00:19:02
原创
778 人浏览过

How to Implement

关于用 Doctrine2 实现删除级联

在使用 Doctrine2 管理数据库关系时,可能会遇到需要自动删除子行的情况删除父行。这是通过“删除级联”选项实现的。

在您的具体示例中,定义您的子实体和父亲实体后,您遇到了未创建“删除级联”选项的问题在数据库中。这可能是由于使用了 ORM 级联(在关联中指定为cascade={"remove"})。

ORM 级联

ORM 级级联处理工作单元内的删除过程,影响对象结构,但不影响数据库本身。当使用 ORM 级联删除对象时,UnitOfWork 会迭代关联的对象并删除它们。

数据库级级联

与 ORM 级相反级联,数据库级级联需要在关联的连接列上指定 onDelete="CASCADE"。此方法向数据库中的外键列添加“删除级联”约束,确保删除父行时自动删除子行。

要更正此问题,请修改您的子实体,如下所示:

<code class="php">namespace Acme\CascadeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="child")
 */
class Child {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
     *
     * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
     *
     * @var father
     */
    private $father;
}</code>
登录后复制

以上是如何在Doctrine2中实现'onDeleteCascade”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板