2009-10-06 81 views
9

我想使用Zend框架而不使用MVC結構,特別是Db_Table類。使用Zend Framework沒有MVC的Db表

我已經創建了幾個代表我的數據庫表類,即

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

當我嘗試實例化這個類(它包括罰款),我收到以下錯誤:

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

有沒有人知道我如何創建幷包含Db_Table類使用的數據庫適配器?

任何指針非常感謝!我正在使用ZF的最新版本。

回答

15

您需要創建一個Zend_Db_Adapter,它是您用來連接數據庫的類。

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

或者你可以使用factory()方法進行實例化多個可配置:

$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

然後指定該適配器對象到你的表類。至少有三種方法可以做到這一點:

  • 設置所有表的應用程序範圍默認:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • 指定適配器表的構造函數:

    $table = new MyTable(array('db'=>$db)); 
    
  • 將適配器存儲在註冊表中並將其指定到表中或將其設置爲默認值:

    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

非常感謝比爾,即工作一種享受!再次感謝 – Stuart 2009-10-06 19:15:12