首頁 > 後端開發 > php教程 > Doctrine2:如何實現刪除級聯以實現無縫資料庫維護?

Doctrine2:如何實現刪除級聯以實現無縫資料庫維護?

Mary-Kate Olsen
發布: 2024-11-03 18:16:03
原創
830 人瀏覽過

Doctrine2: How Do I Implement On Delete Cascade for seamless database maintenance?

Doctrine2:了解刪除級聯

為了無縫的資料庫維護,通常需要在刪除對應的父記錄時自動刪除子記錄。 Doctrine2 透過「刪除級聯時」支援此功能,此功能可確保子記錄在父記錄被刪除時被刪除。

範例實體

考慮下列實體:

<code class="php">class Child {
    /** @ORM\ManyToOne(targetEntity="Father", cascade={"remove"}) */
    private $father;
}

class Father {
    /** @ORM\Id @ORM\GeneratedValue */
    private $id;
}</code>
登入後複製

問題:缺少資料庫級聯

問題:缺少資料庫級聯

雖然程式碼透過「刪除」級聯在Child 和Father 之間建立了關係,但資料庫缺少「刪除時」

解決方案:資料庫級聯
<code class="php">/** @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE") */</code>
登入後複製

要實現真正的刪除級聯,請將onDelete="CASCADE" 新增到子層級的連接列:

這指定當從父表中刪除一行時,子表中所有符合的行將自動刪除。

注意:了解級聯 請務必注意 ORM 級聯和資料庫級聯之間的區別。 ORM 級聯在 Doctrine 的 UnitOfWork 內運行,不會影響資料庫結構,而資料庫級聯會在資料庫中建立物理約束。在目前範例中,cascade={"remove"} 是一個 ORM 層級的級聯,它將觸發 UnitOfWork 中的遞歸刪除,但不會導致所需的資料庫行為。

以上是Doctrine2:如何實現刪除級聯以實現無縫資料庫維護?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板