Mewujudkan Perhubungan dengan Doctrine2
Doctrine2 menyediakan dua mekanisme untuk menguruskan perhubungan: pemadaman lata dan pangkalan data- penguatkuasaan kekangan tahap. Walaupun kedua-duanya mempunyai tujuan yang sama - memadamkan entiti berkaitan apabila entiti induk dialih keluar - ia beroperasi secara berbeza.
Lata Tahap ORM:
Lata peringkat ORM menggunakan anotasi lata={"remove"}, seperti yang dilihat dalam entiti Anak anda. Pilihan ini mengarahkan Doctrine2 untuk mengalih keluar entiti anak secara automatik apabila induk dipadamkan, tetapi hanya dalam konteks UnitOfWork Doctrine. Ia tidak mewujudkan sebarang kekangan pangkalan data.
Penguatkuasaan Kekangan Peringkat Pangkalan Data:
Penguatkuasaan kekangan peringkat pangkalan data dicapai dengan menambahkan onDelete="CASCADE" pada bahasa asing anotasi @ORMJoinColumn lajur utama. Ini mengarahkan pangkalan data untuk memadamkan baris anak secara automatik apabila baris yang berkaitan dialih keluar daripada jadual induk. Untuk melaksanakan pilihan ini dalam entiti Anak anda, ubah suai anotasi @ORMJoinColumn seperti berikut:
<code class="php">@ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")</code>
Memahami Tingkah Laku:
Adalah penting untuk ambil perhatian bahawa tingkah laku lata hanya beroperasi dalam satu arah. Dalam konfigurasi semasa anda, lata ditetapkan untuk mengalih keluar kanak-kanak apabila induk dipadamkan (lata={"remove"} dalam Child). Walau bagaimanapun, pemadaman kanak-kanak tidak mencetuskan pemadaman ibu bapa. Jika anda menginginkan tingkah laku itu, anda perlu membalikkan tetapan lata atau menggunakan perhubungan OneToMany dengan orphanRemoval=true in Father`.
Dengan memahami perbezaan antara mekanisme lata ini, anda boleh mewujudkan perhubungan dalam Doktrin2 dan pastikan data berkaitan dipadamkan secara konsisten mengikut keperluan perniagaan anda.
Atas ialah kandungan terperinci Pemadaman Lata dalam Doktrin2: Tahap ORM lwn. Kekangan peringkat Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!