Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Doctrine2 Mengendalikan Tingkah Laku dengan ON DELETE CASCADE?

Bagaimanakah Doctrine2 Mengendalikan Tingkah Laku dengan ON DELETE CASCADE?

DDD
DDDasal
2024-11-02 08:28:02758semak imbas

How Does Doctrine2 Handle Cascade Behavior with ON DELETE CASCADE?

Pemahaman Mengenai Padam Lata dengan Doctrine2

Doctrine2 menyediakan kefleksibelan untuk mengkonfigurasi gelagat lata apabila bekerja dengan entiti berkaitan. Walau bagaimanapun, salah tanggapan yang lazim ialah tetapan lata={"remove"} dalam perkaitan entiti akan secara automatik menambah pilihan ON DELETE CASCADE pada lajur kunci asing dalam pangkalan data.

Dalam Doctrine2, terdapat dua jenis yang berbeza daripada lata:

1. Lata Tahap ORM:

  • Menggunakan lata={"remove"} dalam persatuan entiti.
  • Pengiraan yang dilakukan oleh Unit Kerja (UoW).
  • Lelaran pada objek yang berkaitan dan mengalih keluarnya apabila objek induk dialih keluar.

2. Lata Tahap Pangkalan Data:

  • Menggunakan onDelete="CASCADE" pada lajur gabungan dalam persatuan entiti.
  • Mencipta pilihan ON DELETE CASCADE pada lajur kunci asing dalam pangkalan data.

Contoh yang disediakan dalam soalan menggunakan lata peringkat ORM. Walaupun ia akan mengalih keluar objek anak yang berkaitan dengan betul apabila memadamkan induk, ia tidak mencipta pilihan ON DELETE CASCADE dalam pangkalan data. Untuk mencapai matlamat ini, pengubahsuaian berikut diperlukan:

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

Adalah penting untuk ambil perhatian bahawa menggunakan lata peringkat ORM seperti dalam contoh akan mengakibatkan pengalihan keluar objek induk apabila objek anak dialih keluar. Ini berkemungkinan bukan tingkah laku yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimanakah Doctrine2 Mengendalikan Tingkah Laku dengan ON DELETE CASCADE?. 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