Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Dengan Betul Pada Delete Cascade dalam Doctrine2?

Bagaimana untuk Melaksanakan Dengan Betul Pada Delete Cascade dalam Doctrine2?

Susan Sarandon
Susan Sarandonasal
2024-11-04 04:30:29935semak imbas

How to Properly Implement On Delete Cascade in Doctrine2?

Doktrin2: Memahami Pada Lata Padam

Konsep On Delete Cascade dalam Doctrine2 membenarkan pemadaman automatik rekod anak apabila rekod induk dipadamkan. Ciri ini memastikan integriti data dengan mengekalkan integriti rujukan.

Melaksanakan On Delete Cascade dalam Doctrine2

Untuk melaksanakan On Delete Cascade, terdapat dua pendekatan:

  1. Tahap Pemetaan Perkaitan Objek (ORM):

    • Nyatakan lata={"remove"} dalam perkaitan dalam entiti anak.
    • Ini mengarahkan Doktrin untuk mengalih keluar semua objek anak yang berkaitan apabila objek induk dipadamkan. Walau bagaimanapun, ia tidak menjejaskan struktur pangkalan data.
  2. Tahap Pangkalan Data:

    • Tambah onDelete="CASCADE" ke lajur gabungan persatuan dalam entiti anak.
    • Ini mewujudkan kekangan pangkalan data yang memadamkan rekod anak secara automatik apabila rekod induk yang dirujuk dipadamkan.

Membetulkan Entiti Anda

Dalam contoh anda, anda telah menggunakan pendekatan peringkat ORM tetapi terlepas atribut onDelete="CASCADE" pada lajur gabungan. Untuk membetulkan ini, ubah suai entiti Child.php seperti berikut:

<code class="php">/**
 * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
 * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
 *
 * @var Father
 */
private $father;</code>

注意事項

  • Lata peringkat ORM={"remove" } seperti yang sedang dilaksanakan juga akan memadamkan objek induk apabila objek anak dipadamkan. Ini biasanya tidak diingini.
  • Oleh itu, adalah disyorkan untuk menggunakan lata peringkat pangkalan data dengan onDelete="CASCADE" untuk kawalan yang lebih baik ke atas tingkah laku pemadaman.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Dengan Betul Pada Delete Cascade dalam Doctrine2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn