Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan \"pada Delete Cascade\" dalam Doctrine2?

Bagaimana untuk Melaksanakan \"pada Delete Cascade\" dalam Doctrine2?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 00:19:02726semak imbas

How to Implement

Pada Padamkan Pelaksanaan Lata dengan Doctrine2

Apabila menggunakan Doctrine2 untuk mengurus perhubungan pangkalan data, anda mungkin menghadapi keperluan untuk memadamkan baris anak secara automatik pada pemadaman baris induk. Ini dicapai melalui pilihan "pada padam lata".

Dalam contoh khusus anda, selepas menentukan entiti Anak dan Bapa anda, anda menghadapi isu di mana pilihan "pada padam lata" tidak dibuat dalam pangkalan data. Ini mungkin disebabkan oleh penggunaan lata peringkat ORM (dinyatakan sebagai lata={"remove"} dalam perkaitan).

Lata Tahap ORM

peringkat ORM lata mengendalikan proses pemadaman dalam UnitOfWork, mempengaruhi struktur objek tetapi bukan pangkalan data itu sendiri. Apabila mengalih keluar objek menggunakan lata peringkat ORM, UnitOfWork melelar melalui objek yang berkaitan dan mengalih keluarnya juga.

Lata Tahap Pangkalan Data

Berbeza dengan peringkat ORM lata, lata peringkat pangkalan data memerlukan menyatakan onDelete="CASCADE" pada lajur gabungan persatuan. Pendekatan ini menambahkan kekangan "pada padam lata" pada lajur kunci asing dalam pangkalan data, memastikan baris anak dipadamkan secara automatik apabila baris induk dialih keluar.

Untuk membetulkan isu, ubah suai entiti Anak anda seperti berikut :

<code class="php">namespace Acme\CascadeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="child")
 */
class Child {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
     *
     * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
     *
     * @var father
     */
    private $father;
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan \"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