2011-07-26 4 views
9

Merhaba Kolay bir iş olacağını düşündüğüm şeylerle ilgili sorun yaşıyorum.İlgili nesneyi yüklemeden Doctrine 2'de yabancı anahtar kimlikleri nasıl ilişkilendirilir?

Veritabanından bir gönderi alıyorum. Gönderi varlığının, bir Kullanıcı varlığına bağlı olan bir alanı vardır.

Ne yapmak isterim? Post ve Kullanıcıyı iki ayrı sorguyla (birleştirmeksizin) yükleyin. Bu, $ post nesnesindeki created_by yabancı anahtar tamsayıya erişmem gerektiği anlamına gelir. Doktrin bunu hiç açığa çıkarmıyor gibi görünüyor. Postanın bir var_dump'ı oluşturulduBy => null. Kullanıcıya doğrudan createBy => Kullanıcı nesnesi sonrası sorgusunda katılırsam. Kullanıcı için sorgulayabilmem için created_by yabancı anahtar tamsayıyı postadan almanın bir yolu yok mu?

teşekkürler sorguya

cevap

19

bunu kullanın: Eğer bir dizi olarak sonucunuzu zorunda

$q->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true); 
$q->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY); 

Nemlendirici, devre dışı bırakılır.

+0

Ah harika. Bu ipucu hakkında bir şey bilmiyordum. Ancak, sorgu nesnesinde setHydrate yöntemi görünmüyor. Yine de bir dizi olarak hidratlayabilirsiniz ve işe yarıyor (ve hala güzel bir nemlendirilmiş sonuç elde edersiniz). $ Q> getResult (\ Doktrin \ ORM \ Sorgu :: HYDRATE_ARRAY); Cevabınızı güncellerseniz kabul edeceğim. Teşekkürler! – Marc

+0

Evet, haklısınız. setHydrate MongoDB ODM içindir. – Maxence

+0

Aslında sadece MongoDB ODM'yi denemeye karar verdim, böylece bunu aklımda tutacağım. Teşekkürler! – Marc