PHP doktrini 1.2 ORM - sınıf tablo miras ile polimorfik sorgular

0 Cevap php

Ben PHP için Doktrini ORM (v1.2) ile deney yaşıyorum. Ben iki çocuk sınıflar "cin" ve "viski" ile, bir sınıf "içki" belirledik. Ben üç ayrı veritabanı tabloları için sınıfları haritasına somut miras (çoğu literatürde sınıf tablo miras) kullanıyorum.

Ben aşağıdaki yürütmek çalışılıyor:

$liquor_table = Doctrine_Core::getTable('liquor');
$liquors = $liquor_table->findAll();

Başlangıçta, ben $ likörler onlar viski veya cin olsun, tüm likör içeren bir Doctrine_Collection olması bekleniyor. Ben kodu çalıştırdığınızda, ben viski ve cin veritabanı tabloları birkaç satır olmasına rağmen, boş bir koleksiyon olsun. ORM gerçek veri depolanan viski / cin tabloları "içki" tablo sorgularken, ve değil: neden oluşturulan SQL dayanarak, anlıyorum.

Ben sütun toplama (basit tablo miras) için miras türünü açtığınızda kod mükemmel çalışıyor unutmayın.

Tüm likör içeren bir Doctrine_Collection elde etmek için en iyi yolu nedir?

Update

Ben Doktrini "viski" ve "cin" tablodan sonuç kümelerini birleştirmek için perde arkasında UNION işlemi SQL sahne bekliyorum gibi biraz daha araştırma sonra, o görünüyor.

Bu, polymorphic query olarak bilinir.

Göre this ticket, bu işlevsellik Doktrin 1.x. mevcut değildir Bu 2.0 sürümü için kaderinde. (Ayrıca, doktrin CTI için 2.0 docs bakınız).

Yani bu bilgiler ışığında, ne bu eksikliği gidermek için temiz, en verimli yol olacaktır? Tek tablo devralma Switch? İki DQL sorguları gerçekleştirmek ve elle çıkan Doctrine_Collections birleştirme?

0 Cevap