关于用 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中文网其他相关文章!