2009-10-06 7 views
9

MVC構造体、特にDb_Tableクラスを使用せずにZend Frameworkを使用しようとしています。MVCを使用しないZend Framework 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

を参照してください。そして、あなたのテーブルクラスにこのアダプタオブジェクトを指定します。これを行うには、少なくとも3つの方法があります。すべてのテーブルのためのアプリケーション全体のデフォルトを設定し

  • 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

関連する問題