[Zend Framework] Zend_Db: application.ini の設定を活かして利用する
application.ini と Zend_Registry を使って、さらっと DB に接続します。
設定
接続設定を記載します。
; +----+
; | 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 ファイルの内容をこんな指定でとれるんですね。
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);
}
コントローラ
Zend_Registry::get(‘db’) で読み込めます。
例えばこんな形とか。
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);
}