2009-10-06 13 views
9

Estoy tratando de usar Zend Framework sin usar la estructura MVC, específicamente las clases Db_Table.Usando tablas de Zend Framework Db sin MVC

he creado un par de clases que representan mis tablas de la base, es decir

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

Cuando intento crear una instancia de esta clase (que se incluye fina), me sale el siguiente error:

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

¿Alguien sabe cómo creo e incluyo el adaptador de base de datos para las clases Db_Table que debo utilizar?

¡Todos los indicadores son muy apreciados! Estoy usando la última versión de ZF.

Respuesta

15

Necesita crear un Zend_Db_Adapter, que es la clase que utiliza para conectarse a la base de datos.

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

O puede usar el método para hacer factory() ejemplificación más configurable:

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

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

continuación, especifique este objeto adaptador a su clase de mesa. Existen al menos tres maneras de hacer esto:

  • Establecer un defecto en toda la aplicación para todas las tablas:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • Especificar el adaptador al constructor tabla:

    $table = new MyTable(array('db'=>$db)); 
    
  • Almacene el adaptador en el registro y especifíquelo en la tabla o configúrelo como predeterminado:

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

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

+0

Muchas gracias a Bill, que funcionaba un lujo! Gracias de nuevo – Stuart

Cuestiones relacionadas