SORU
13 HAZİRAN 2011, PAZARTESİ


Doctrine2 ile On delete cascade

Ana tablodan bir satır silmek ve otomatik olarak alt tablo Doctrine2 kullanarak eşleşen satırları silmek için nasıl öğrenmek için basit bir örnek yapmaya çalışıyorum.

İşte kullanıyorum iki taraf:

Child.php:

<?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\JoinColumns({
     *   @ORM\JoinColumn(name="father_id", referencedColumnName="id")
     * })
     *
     * @var father
     */
    private $father;
}

Father.php

<?php
namespace Acme\CascadeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="father")
 */
class Father
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
}

Tabloları doğru veritabanı oluşturulur, ancak On Delete Cascade oluşturulan değil seçeneği. Neyi yanlış yapıyorum?

CEVAP
13 HAZİRAN 2011, PAZARTESİ


Doktrinde cascades iki türü vardır:

1) ORM seviye Derneği cascade={"remove"} kullanır - bu UnitOfWork yapılır ve veritabanı yapısı etkilemez güçlü bir ilişki vardır. Bir nesneyi kaldırdığınızda, UnitOfWork derneğin tüm nesneler üzerinde yineleme ve bunları kaldırın.

2) Veritabanı düzey dernek joinColumn onDelete="CASCADE" kullanır - bu veritabanına yabancı anahtar sütunu için Delete Cascade ekleyin

@ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")

Ben de senin cascade=yol göstermek istiyorum {eğer Çocuk bir nesneyi silmek""} Kaldır şu anda, bu basamakla Ana nesne kaldıracaktır. Ne istediğinizi açıkça değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009