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

  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • Sam Kear

    Sam Kear

    14 Temmuz 2007
  • WK

    WK

    9 Ocak 2006