Bagaimanakah Doctrine2 Mengendalikan Tingkah Laku dengan ON DELETE CASCADE?

DDD
Lepaskan: 2024-11-02 08:28:02
asal
757 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!