2009-10-06 14 views
9

Próbuję użyć Zend Framework bez użycia struktury MVC, w szczególności klas Db_Table.Używanie tabel Zend Framework Db bez MVC

Stworzyłem kilka klas reprezentujących moich tabel bazy danych, tj

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

Kiedy próbuję instancję tej klasy (to jest wliczone w porządku), pojawia się następujący błąd:

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

Czy ktoś wie, jak utworzyć i uwzględnić adapter bazy danych dla klas Db_Table do użycia?

Wszelkie wskazówki są mile widziane! Używam najnowszej wersji ZF.

Odpowiedz

15

Musisz utworzyć Zend_Db_Adapter, który jest klasą używaną do łączenia się z bazą danych.

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

Albo można użyć metody factory() aby instancji bardziej konfigurowalny:

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

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

Następnie określ ten obiekt adaptera do klasy tabeli. Istnieją co najmniej trzy sposoby, aby to zrobić:

  • Ustaw domyślna aplikacja szerokości dla wszystkich tabel:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • Określ adapter do konstruktora tabeli:

    $table = new MyTable(array('db'=>$db)); 
    
  • Zapisz adapter w rejestrze i podaj go w tabeli lub ustaw jako domyślny:

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

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

+0

dzięki dużo Bill, która pracowała doskonale! Dzięki jeszcze raz – Stuart

Powiązane problemy