Zend_Db_Table
bir Table Data Gateway olduğunu. O
bir veritabanı tablosuna bir ağ geçidi gibi davranır. Bir örnek tablodaki tüm satırları işler.
Bu demektir, sen masanın başına bir sınıf var. Sizin Model_DbTable_Foo
veritabanındaki Foo tablo ve sadece bu tabloyu temsil eder. Bu diğer tabloları ekler yapmak gerekir. Yani için başka bir tablo sınıf kullanmak ne var. Temiz seçenek için birden çok tablo ekler ele bilir senin TDGS üstüne başka bir katman, örneğin eklemek olacaktır
class Model_Gateway_FooBar
{
protected $_tables;
public function __construct(Zend_Db_Table_Abstract $foo,
Zend_Db_Table_Abstract $bar)
{
$this->_tables['foo'] = $foo;
$this->_tables['bar'] = $bar;
}
public function addFoo($data)
{
$this->_tables['foo']->insert($data['foo']);
// yaddayaddayadda
$this->_tables['bar']->insert($data['bar']);
}
}
Ancak, sizin app ve rahatsız ve sadece Foo sınıfındaki diğer sınıfının yeni bir örneğini oluşturmak ve oradan, örneğin ekleme yapmak için karar verebilirsiniz
$otherTable = new Model_DbTable_Bar;
$otherTable->insert($data);
Başka bir seçenek denetleyicisi mantığı koymak olacaktır, ama bu bir kontrolörün sorumluluğunda değildir ve genellikle controllers should be kept thin and models should be fat Çünkü ben, bunu tavsiye edemez.
Birden ekler yapıyoruz bir dipnot düşmek, beklendiği gibi hem ekler, örneğin, iş yapmak için işlemler kullanmak isteyebilirsiniz
$this->_tables['foo']->getAdapter()->beginTransaction();
ve commit()
ya da rollback()
sorgu sonuca bağlı olarak değişir.
Ayrıca ZF1.9 olarak, aynı zamanda, ilk olarak örneğin somut bir alt sınıfı tanımlamak zorunda kalmadan Zend_Db_Table örneklerini oluşturabilirsiniz unutmayın
$fooTable = new Zend_Db_Table('foo');
Bölümüne bakınız Zend_Db_Table in the ZF Reference Guide.