首頁 > 後端開發 > php教程 > 如何在Doctrine2中實現'onDeleteCascade”?

如何在Doctrine2中實現'onDeleteCascade”?

Mary-Kate Olsen
發布: 2024-11-03 00:19:02
原創
821 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板