Eğer birini seçin gerçekten koşullara bağlıdır, ancak bunu başarmak için farklı şekillerde bir çift, var.
1) nesneler ve veritabanı arasındaki bağlantıyı kırmak
Veritabanı tabloları ile hiçbir bağlantısı var senin nesneleri yazın. Öncelikle veritabanı tabloları normalleştirmek, sonra, uygulamanın kullanıcı veri ile etkileşim nasıl bakmak. Nesnelere veri modeli, ancak (yani Zend_DB_Table_Abstract sınıf) masaya her nesneyi kravat yok
Size nesneleri kurduk, sonra geri veritabanındaki ilgili tablolar için nesneleri harita mapper sınıflar yazmak. Bunlar (uygunsa) Zend_Db_Table uzatmak sınıflardır.
Bunu iki şekilde katılır işlemek, ya sadece sizin mapper sınıfı içinde ilgili yöntemleri yapmak Zend_Db_Select kullanın (IMHO daha iyi bir seçimdir), Zend_Db_Table ilişki işlevsellik yoluyla katılır, ya da harita olabilir.
Yani o zaman (her zaman muhtemelen masa başı değil) iki sınıfları var
Person
PersonMapper
Kodunuzda, bazı nesneler ile çalışmak, ya da yeni bir nesne oluşturmak istediğinizde
$person = new Person();
$person->setName('andrew taylor');
Sonra kaydetmek için eşleştiricisine onu geçmek yazmak:
$personMapper = new PersonMapper();
$pesonnMapper->save($person);
Ya da, o başka bir yol yapmak:
$personMapper = new PersonMapper();
$person = personMapper->load(29);
$person->setName('joe bloggs');
$personMapper->save($person);
Burada itibaren sonraki adım dayalı bir koleksiyon sınıf olmak SPL olacaktır:
$personList = $personMapper->loadAllMen();
foreach($personList AS $person) {
echo $person->getName();
}
: $ PersonMapper-> loadAllMen () yöntemi gibi olduğu
$select = $this->select();
$select=>where('gender = "Male"');
$zendDbRows = this->fetchAll($select);
return new PersonList($zendDbRows);
2) MySQL İzlenme
Orada katılmak başına bir satır, bu nedenle, size emir tabloda bir kimliği dayalı müşteri bilgilerini katılmadan konum ve salt okunur yapıyoruz katıldı tabloları bir sürü varsa (yani istemiyorum Eğer, o zaman, üstünde tek bir görünüm sizin normalize tabloları oluşturmak) Zend_Db_Table adaptör aracılığıyla herhangi bir bilgi güncelleyin. Görünümü tek bir tabloya bağlanma gibi hissediyor Zend aracılığıyla bunu perde arkasında katıldı işler.
Bu bazı uyarılar vardır, MySQL Gösterim onlar kesinlikle sadece okunduğu, bazı performans sorunları (o FK birleştirmeler tek bir satırda en iyi neden olan) var ve yok.