2011-01-30 28 views
6

Quiero usar Zend_Db sin Zend_Framework. Quiero incorporar Zend_Db para mi sitio web existente que no fue creado usando Zend Framework. ¿Es posible usar Zend_Db de esta manera? ¿Me puede recomendar un buen tutorial o un ejemplo de cómo hacerlo bien?Zend_Db sin Zend Framework

Respuesta

10

Hasta cierto punto, esto depende del marco web que está utilizando. Pero, en general, el Zend_Db documentation es bastante claro en este sentido.

Crea una instancia de adaptador en tu rutina de arranque. A modo de ejemplo:

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

Si va a utilizar Zend_Db_Table, entonces usted puede hacer esto el adaptador por defecto:

Zend_Db_Table::setDefaultAdapter($db); 

En cualquier caso, es útil tener este adaptador guardados en algún lugar donde se puede acceder eso. Por ejemplo:

Zend_Registry::set('db', $db); 

Luego, en el código de aguas abajo, utilizar este adaptador para crear consultas para select(), insert(), update(), delete(), etc:

$db = Zend_Registry::get('db'); 
$select = $db->select() 
    ->from('posts') 
    ->where('cat_id = ?', $catId) 
    ->order('date_posted DESC') 
    ->limit(5); 
$rows = $db->fetchAll($select); 

Espero que esto ayude. ¡Aclamaciones!

+0

Buena respuesta completa ... –

+0

Gracias. Voy a intentar esto. – user594791

0

El uso de Zend_Db incluso sería preferible (en mi humilde opinión) sobre el uso de Raw PDO. Simplemente cree un Objeto $ db y luego cree Declaraciones SQL usando la Clase Zend_Db_Select y pase la Instrucción SQL $ select a los métodos fetch * (fetchRow, fetchAll ...).

1

Para Zend Framework 2. *, creando el adaptador sería:

$db = new \Zend\Db\Adapter\Adapter([ 
    'driver' => 'Pdo_Mysql', 
    'host' => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxx', 
    'database' => 'test', 
]); 

Para crear selecto:

$sql = new \Zend\Db\Sql\Sql($db); 
$select = $sql->select() 
    ->from('posts') 
    ->where(array('cat_id' => $catId)) 
    ->order('date_posted DESC') 
    ->limit(5); 
$statement = $sql->prepareStatementForSqlObject($select); 
$results = $statement->execute(); 

O, si desea obtener SQL puro a partir del $ seleccionar:

$selectSql = $sql->getSqlStringForSqlObject($select); 

Docs puede ser útil. Puede ser incluso más simple si se usa TableGateway.