[Zend Framework] Zend_Db: application.ini の設定を活かして利用する
application.ini と Zend_Registry を使って、さらっと DB に接続します。
[markdown]
## 設定
接続設定を記載します。
“`php:application/configs/application.ini
; +—-+
; | Db |
; +—-+
resources.db.adapter = “pdo_mysql”
resources.db.isDefaultTableAdapter = true
resources.db.params.host = “localhost”
resources.db.params.username = “root”
resources.db.params.password = “”
resources.db.params.dbname = “zend_db”
“`
ini ファイルの内容をこんな指定でとれるんですね。
“`php:application/Bootstrap.php
protected function _initDatabase()
{
// get config from config/application.ini
$config = $this->getOptions();
$db = Zend_Db::factory($config[‘resources’][‘db’][‘adapter’], $config[‘resources’][‘db’][‘params’]);
//set default adapter
Zend_Db_Table::setDefaultAdapter($db);
//save Db in registry for later use
Zend_Registry::set(“db”, $db);
}
“`
> * [database – Zend Db connection and configuration – Stack Overflow](http://stackoverflow.com/questions/5998122/zend-db-connection-and-configuration)
## コントローラ
Zend_Registry::get(‘db’) で読み込めます。
例えばこんな形とか。
“`php
public function indexAction()
{
// action body
$db = Zend_Registry::get(‘db’);
if ($this->getRequest()->getParam(‘name’))
{
$name = $this->getRequest()->getParam(‘name’);
$select = $db->select()->from(‘addressbook’)->where(“name = ‘{$name}'”);
} else {
$select = $db->select()->from(‘addressbook’);
}
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchAll($select);
$this->view->assign(‘result’, $result);
}
“`
> * [Zend Frameworkのデータベース接続 – [Zend Framework/PHP] ぺんたん info](http://pentan.info/php/zend_fw/db_connect.html)
[/markdown]