2 Domain Modelleri Kombine Veri

1 Cevap php

im Data Gateway / Domain Pattern uygulamaya çalışıyor. Ben temel ve kalıcı veri katmanından ayrı bir etki alanı mantığı onun fantastik bir modelini anlamak. Şimdi i gereksinimi şu var:

Kullanıcı (lar) ve Company (ies): i 2 domain-model var diyelim. I tüm kullanıcılar ile kullanıcı listesini almak istiyorlar, ben böyle bir şey yapmak istiyorum:

$userGateway = new Model_UserGateway();

$users = $userGateway->fetchAll();

foreach ($users as $user) {...}

Bu çok ince, ama şimdi zor kısmı çalışır: Ben şimdi istiyorum, tüm kullanıcılar ve bunlara karşılık gelen şirket ile bir listesi var. Ben her kullanıcı, ilgili şirket için kullanıcılar ve örneği üzerinden yineleme olabilir, ama bu ... benim en sevdiğim çözüm değildir. Kötü durumda i iç içe geçmiş veritabanı sorguları üretirler. (: Başka bir yaklaşım i dont know ... ağ geçidi ile ek kullanıcı verilerini almak ve onlarla anlaşma olurdu

Nedir şirket bilgi ile bir kullanıcı listesini almak için en iyi uygulama?

şimdiden teşekkürler

Michael M

1 Cevap

Lütfen Model_UserGateway in fetchAllWithCompany gibi bir yöntemi uygulamak. Bu yöntemde her iki tablodan bilgileri alır bir veritabanı sorgu gerçekleştirmek. Örneğin

SELECT * 
FROM user 
LEFT JOIN company ON user.id = company.user_id

ve sonra da birlikte istediğiniz tüm bilgi almak:

$users = $userGateway->fetachAllWithCompany();

Bu yapardım yoludur. Eğer şirket iyi değil almak için her kullanıcı için bir sorgu oluşturma, dediği gibi.

Edit:

Lütfen User nesne yapabileceğiniz bir getCompany yöntemi olduğunu varsayarak:

foreach($users as $user) {
    $company = $user->getCompany()
}

Tabii getCompany bir Company nesneyi dönmelidir.

Öğrenmek için bu uygulamak istiyor musunuz? Çerçeveler çok örneğin veritabanı soyutlama bu tür destek Çünkü Zend framework.