2009-10-06 16 views
9

MVC yapısını, özellikle Db_Table sınıflarını kullanmadan Zend Framework'ü kullanmaya çalışıyorum. Benim veritabanı tabloları temsil eden sınıfların bir çift yarattıkMVC kullanmadan Zend Framework Db Tablolarını Kullanma

, yani

class DBTables_Templates extends Zend_Db_Table_Abstract 
{ 
    protected $_name = "templates"; 
} 

I (ince dahildir) bu sınıfın bir örneğini deneyin aşağıdaki hatayı alıyorum:

Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for DBTables_Templates'

Kullanmak için Db_Table sınıfları için veritabanı bağdaştırıcısını nasıl oluşturduğumu ve dahil ettiğimi bilen var mı?

Herhangi bir işaretçi büyük beğeni topluyor! En son ZF sürümünü kullanıyorum.

cevap

15

Veritabanına bağlanmak için kullandığınız sınıf olan bir Zend_Db_Adapter oluşturmanız gerekir.

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'  => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxxxx', 
    'dbname' => 'test' 
)); 

Yoksa örnekleme daha yapılandırılabilir hale getirmek için factory() yöntemi kullanabilirsiniz:

$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'  => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxxxx', 
    'dbname' => 'test' 
)); 

http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.connecting

Sonra masa sınıfına bu bağdaştırıcısı nesnesini belirtmek Bkz. Bunu yapmak için en az üç yolu vardır:

  • Set tüm tablolar için bir uygulama genelindeki varsayılan:

    $table = new MyTable(array('db'=>$db)); 
    
  • :

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • tablo kurucusuna adaptörü belirtin

    Bağdaştırıcıyı kayıt defterinde saklayın ve tabloya belirtin veya varsayılan olarak ayarlayın:

    Zend_Registry::set('my_db', $db); 
    $table = new MyTable(array('db'=>'my_db')); 
    // alternatively: 
    Zend_Db_Table_Abstract::setDefaultAdapter('my_db'); 
    

http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing

+0

Teşekkür bir tedavi çalıştı çok Bill bak! Tekrar teşekkürler – Stuart