Aynı nesne iki öğreti varlıkları birleştirme nasıl

0 Cevap php

In my database, the user management is divided into two tables: - One created by the symfony sfDoctrineGuard plugin (sfGuardUser), with the username, the password and other information used by the plugin - another one that I created to extend this table with more properties such as the firstname, surname etc...

Ne yapmak istediğiniz belirli bir sayfadaki herhangi bir üye ile ilgili tüm bilgileri görüntülemek için aynı nesneye iki tablonun tüm özelliklerini toplamaktır.

Bu amaçla ben böyle iki tablo bir katılmadılar:

$q = $this->createQuery()
->from('sfGuardUser u')
->leftJoin('u.Mishmember m WITH u.id = ?', $rel['member_id']);

$member = $q->fetchOne();

Benim sorunum hem tabloları tüm özelliklerini seçer beri oluşturulan sorgu doğru gibi görünüyor, ama $ üye değişken, ben sadece sfGuardUser nesnenin özelliklerine erişebilirsiniz olmasıdır.

Ben $ üye nesne her iki tablo / doktrin tüm nesnelerin özelliklerini saklanması istiyorum.

Bunu nasıl yapacaksın?


Edit1: Ben yaparsam

print_r($member->toArray()) 

Önceki kod sonra tüm birinci boyutta sfGuardUser özelliklerini ve ikinci boyutta benim ikinci tablonun özelliklerini içeren bir 2 boyutlu bir dizi olsun. Print_r sonucunu silmek olmak gibidir:

Array (
   [table1-prop1] => value 
   [table1-prop2] => value 
   [table1-prop3] => value 
   [Table2] => Array (
                  [table2-prop1] => value 
                  [table2-prop2] => value 
                  [table2-prop3] => value 
                  [table2-prop4] => value
   )
) 

So to access for example the table2-prop3 property I have to do: $var[Table2][table2-prop3];

Hangi ben sameobjet ya da dizi olarak bir parçası olarak tüm özelliklerini dikkate almak istiyorum çünkü ne istediğiniz değil (sadece bir tablo vardı sanki.)

Eğer hala benimle iseniz yukarıdaki dizi gibi görünmelidir:

Array (
   [table1-prop1] => value 
   [table1-prop2] => value 
   [table1-prop3] => value 
   [table2-prop1] => value 
   [table2-prop2] => value 
   [table2-prop3] => value 
   [table2-prop4] => value
   )
) 

Bu benim sorunumu anlamak için yardımcı olur umarım.


EDIT2 (DuoSRX ve DrColossos cevabı)

Sizin ilginç cevaplar için hem teşekkür ederiz.

Eh, ben değil benim sfGuardUser bir Mishmember özelliğine sahip değil ediyorum nedeni hem tablolar / sınıfları aynı varlık (kullanıcı) için ayakta olmasıdır. Bu parçalanma (benim özellikleri eklemek için doğrudan sfGuardPlugin düzenlemek için akıllıca olmaz) benim veritabanında kaçınılmaz olsa bu kadar olurdu, çünkü, ben, ben bir masa vardı sanki uygulamanın kod olacağını istiyorum daha mantıklı ve kullanmak mantıklı (modelini bilmiyor başka bir geliştirici denetleyicisi veya şablonlar üzerinde çalışmak zorunda olacağını hayal ...)

(Birden çok devralma PHP5'ta var mı?) SfGuardUser ve Mishmember devralan bir Doktrin sınıf Kullanıcı ekleme ne düşünürsünüz benim denetleyicisi ile başa çıkmak için tek bir kullanıcı sınıfını olurdu ki?

Onlar saklandığı tablo olarak öğrenmek için rahatsız olmadan herhangi bir kullanıcının tüm özelliklerini sormak için bana çok daha mantıklı olur.

Ben nasıl doktrin miras eserleri hakkında emin değilim ama bana etkileyicisi çözüm gibi görünüyor (yanılıyorsam söyle lütfen!)

Ben öyle bir şey sormaya çekinmeyin yeterince açık oldum emin değilim.

0 Cevap