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!