Ben Zend Framework tablo ilişkileri özelliğini tasarlanmış ve uygulanmıştır.
Eylem Kullanıcıya bir yabancı anahtar referansı vardır eğer findParentRow()
kullanmak istiyorum - Benim ilk comment findDependentRowset()
yine de kullanmak olmaz olmasıdır.
$actionTable = new Action();
$actionRowset = $actionTable->fetchAll();
foreach ($actionRowset as $actionRow) {
$userRow = $actionRow->findParentRow('User');
}
Edit: döngüsünde, artık bir $ actionRow ve $ userRow nesnesi var. Sen nesne alanları değişiyor ve nesne üzerinde save()
arayarak ya nesnesi yoluyla geri veritabanına değişiklikleri yazabilirsiniz.
Ayrıca Eylem ve kullanıcı arasındaki katılmak dayalı bir satır kümesi almak için (ben projeyi ayrıldıktan sonra hayata geçirildi) Zend_Db_Table_Select sınıfını kullanabilirsiniz.
$actionTable = new Action();
$actionQuery = $actionTable->select()
->setIntegrityCheck(false) // allows joins
->from($actionTable)
->join('user', 'user.id = action.user_id');
$joinedRowset = $actionTable->fetchAll($actionQuery);
foreach ($joinedRowset as $joinedRow) {
print_r($joinedRow->toArray());
}
Bir katılmak sorguya dayalı böyle bir satır kümesi olduğu salt okunur unutmayın. Sen save()
geri veritabanına değişiklikleri göndermek için Satır nesneleri ve çağrı alan değerlerini ayarlanamaz.
Edit: rasgele katıldı sonuç yazılabilir set yapmak için hiçbir yolu yoktur. Yukarıda belirtilen katıldı sonuca dayalı basit bir örneği ele alalım:
action_id action_type user_id user_name
1 Buy 1 Bill
2 Sell 1 Bill
3 Buy 2 Aron
4 Sell 2 Aron
Sonraki action_id = 1 satır, ben Kullanıcı nesneden gelen alanlardan birini değiştirin:
$joinedRow->user_name = 'William';
$joinedRow->save();
Sorular: I = 2 action_id ile sonraki satır görmek, ben 'Bill' veya 'William' görmek gerekir? 'William', bu satırı 1 tasarruf otomatik olarak bu sonuçla tüm diğer satırlar kümesindeki 'William' için 'Bill' güncellemek zorunda olduğu anlamına gelir mi? Yoksa save()
otomatik olarak yenilenir sonucu veritabanından set almak için SQL sorgu yeniden çalışır demek? Ne sorgu zaman alıcı olur?
Ayrıca, nesne yönelimli tasarım düşünün. Her Satır ayrı bir nesnedir. O save()
bir nesne çağıran (onlar nesnelerin aynı koleksiyon parçası olsa bile) ayrı bir nesne içinde değişen değerlerin yan etkisi olduğunu uygun mudur? İşte Content Coupling Benim için bir form gibi görünüyor.
Yukarıdaki örnekte nispeten basit bir sorgu, ama çok daha karmaşık sorguları da izin verilir. Zend_Db salt okunur sonuçlar yazılabilir sonuçlarını anlatmak için niyeti ile sorguları analiz edemezsiniz. MySQL hit güncelleştirilebilir değil bu yüzden de bulunuyor.