PHP Doktrin - yükleme ile ilgili kayıtları

2 Cevap php

Doktrin PHP Kullanımı

Ben bir modeli adresi ile birçok ilişki çok ve her adres bir adres türü (ev, ofis) bir yabancı anahtar ile bir kullanıcı varsa. Doktrin otomatik olarak bu adres türü için ilgili kayıtları yüklemez.

$user = Doctrine::getTable('User')->findOneById(1); // bob
echo $user->Address[0]->address_type_id; // 4
echo isset($user->Address[0]->AddressType); // false
$user->Address[0]->refreshRelated(); // or $user->Address[0]->loadReference('AddressType');
echo isset($user->Address[0]->AddressType); // true
echo $user->Address[0]->AddressType->name; // office

Bu doktrin ya da benim modelde bir hata olup olmadığından emin değil.

Ama bu derin bir düzeyin ötesinde ilgili modelleri yüklemek için en iyi yolu ya da aynı sonucu elde etmek için başka bir yol var mı?

2 Cevap

Have you simply tried joining you relations one by one? Works pretty well, if you relations are set up correct.

$user = Doctrine::getTable('User')
  ->createQuery('u')
  ->leftJoin('u.Address a')
  ->leftJoin('a.AddressType t')
  ->findOneById(1);

Ayrıca örnek karşılaştırıldığında, db 2 sql sorguları yedek.

Bunu yapamazsın diyorlar:

echo $user->Address[0]->AddressType->name;

Eğer isset olmadan denerseniz, Doktrin değer sizin için otomatik olarak almadan önce ayarlanmış olup olmadığını görmek için kontrol etmelisiniz.