26

Symfony projesinde Doctrine 1.2 kullanıyorum ve şemada beton ve sütun toplama kalıtım türlerini karıştırmayı düşünüyorum: sütun birleştirme üst tabloda sorgulamama izin verir hem ebeveyn hem de çocuk kayıtları, beton miras ise daha temiz bir şema elde etmemi sağlıyor. Artı, karışım aynı kalıtım zincirinde olacaktır. Şema dosyasını nasıl yazarım? Aşağıdaki gibi mi?Aynı şemadaki farklı kalıtım türleri

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: concrete 
D: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 


E: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   2 

herhangi tehlikeleri/uyarılar var mıdır:

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 

Ya da belki böyle

?

+0

Görünüşe göre, C olur Kimsenin paylaşma deneyimi yok. Bunun nasıl gittiğini bilmek isterdim - ilk düşüncem işe yaramıyordu. – benlumley

+0

@benlumley Peki, biz denedik, ve biz test ediyoruz, ve şu an için gayet iyi çalışıyor gibi görünüyor. Yine de bazı sorunlarla karşılaşırsak yayınımı düzenler ve bir yorum ekleyeceğim. Şemanın ikinci versiyonunu denedik. – greg0ire

+0

@ greg0ire: Somut devralma söz konusu olduğunda DİKKAT EDİLMEKTEDİR :-) Ana tabanda bunları tanımlamadığınıza emin olun. Hiç karıştırılmamış ve herhangi bir dereceyle eşleşmediyse, ya bu kadar kötü bir şekilde karşılaştığınız herhangi bir sorunu duymak sizi rahatsız ediyor ... – prodigitalson

cevap

1

sürece dairesel devralma önlemek veya elmas biçimli miras Eğer iyi olurdu ve aşağıdaki gibi açıkça görünüyor (bu

A dairesel devralma kullanabilirsiniz olarak

A sınıfı B Uzattı B sınıfı A

VEYA

Uzattı

SINIFI Cı

B SINIFI bir

C SINIFI bir elmas şekilli miras hakkında biraz daha yuvarlak olan bir

extends uzanır. durumun aşağıdaki tip

SINIFI

B SINIFI bir

C SINIFI bir

CLASS D B UZATIR extends olduğunda bu

+0

Doktrinde birden fazla kalıtımın mümkün olduğunu mu söylüyorsunuz? Bu php ile olmadığı için, ben şüphe ediyorum ... – greg0ire

+0

kelime için +1 Bu söylemeye çalıştığım tüm bu kısıtları olmadığı sürece. Güvenli bir şekilde miras bırakabiliriz. – footy

İlgili konular