Zend_Db без Zend Framework
Я хочу использовать Zend_Db без Zend_Framework. Я хочу включить Zend_Db для моего существующего сайта, который не был создан с использованием Zend Framework. Можно ли использовать Zend_Db таким образом? Можете ли вы порекомендовать хороший учебник или пример, как сделать это хорошо?
3 ответа
В некоторой степени это зависит от веб-платформы, которую вы используете. Но, в целом, документация Zend_Db довольно ясна в этом отношении.
Создайте экземпляр адаптера в вашей начальной загрузке. В качестве примера:
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
Если вы планируете использовать Zend_Db_Table
, то вы можете сделать это адаптером по умолчанию:
Zend_Db_Table::setDefaultAdapter($db);
В любом случае полезно сохранить этот адаптер там, где вы можете получить к нему доступ. Например:
Zend_Registry::set('db', $db);
Затем в своем последующем коде используйте этот адаптер для создания запросов для select()
, insert()
, update()
, delete()
, так далее:
$db = Zend_Registry::get('db');
$select = $db->select()
->from('posts')
->where('cat_id = ?', $catId)
->order('date_posted DESC')
->limit(5);
$rows = $db->fetchAll($select);
Надеюсь это поможет. Ура!
Для Zend Framework 2.* создание адаптера будет:
$db = new \Zend\Db\Adapter\Adapter([
'driver' => 'Pdo_Mysql',
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxx',
'database' => 'test',
]);
Для создания выберите:
$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();
Или, если вы хотите получить чистый SQL из $select:
$selectSql = $sql->getSqlStringForSqlObject($select);
Документы могут быть полезны. Это может быть еще проще, если используется TableGateway.
Использование Zend_Db было бы даже предпочтительнее (IMHO) по сравнению с использованием Raw PDO. Просто создайте объект $db, а затем создайте операторы SQL, используя класс Zend_Db_Select, и передайте оператор SQL $select в методы fetch* (fetchRow, fetchAll...).