ZendFrameworkでデータベースにアクセスする

ZendFrameworkはモデルを作成しなくてもデータベースにアクセスすることが出来ます。ZendFrameworkには、モデルの原型となるクラスが用意されており、それを利用するだけで簡単なデータベースアクセスは行うことが出来るのです。
このデータベースアクセスの土台となるクラスが『Zend_Db』です。今日はこの『Zend_Db』について勉強してみたいと思います。前回作成したTestController.phpファイルを変更しながら作成していきたいと思います。

コントローラの作成

1) それでは、まず最初にrequire_onceでZend_Dbの記述されているファイルを読み込みます。

require_once ’Zend/Db.php’;

2) 次にデータベースに接続し、データを取得後、連想配列にデータベース情報をセットします。普通ならini()に作成するところですが、とりあえず、今回はindexActionに直接作成します。

3) 上から説明していきたいと思います。まずデータベースの設定情報を用意します。各自のサーバーに合わせて設定情報を用意して下さい。

$config=array(
 'host'=>'mysql21.firebird.netowl.jp',
 'username'=>'winroad',
 'password'=>'winroad1234',
 'dbname'=>'winroad_db');

4) 続いて、Zend_Dbのインスタンスを取得します。これは、newではなく、『Zend_Db::factory』というメソッドを呼び出して行います。

$this->db=Zend_Db::factory('Pdo_Mysql',$config);

5) データベースへの接続は、返されたアダプタークラスのオブジェクトから『getConnection』を呼び出して行います。

$this->db->getConnection();

6) Zend_Dbではデータベースへの問い合わせ方法がいくつかありますが、今回は『Zend_Db_Select』クラスを利用してレコードを取得します。

$select=$this->db->select()->from('dvd_collections');

7) 『fetchAll』は、引数に指定したオブジェクトデータベースに送り、結果を取得するメソッドです。これにより全レコードを取得します。

$result=$this->db->fetchAll($select);

8) 最後に、得られた情報を『view->assign』でビューに連想配列として渡します。

$this->view->assign('result',$result);

ビューファイルの作成

9) 『views/scripts/test』フォルダのindex.phtmlファイルを変更します。データ表示用のテーブルを追加挿入します。

10) index.phtmlファイルの作成はそんなに難しくないと思います。簡単に言えば、コントローラーで用意した連想配列($this->result)をひとつずつ取り出し、配列の数だけ繰り返して表示しています。

11) それでは、ブラウザで確認してみます。これで、一応データベースへの接続は出来ましたが、この方法では、コントローラに設定情報を配列として用意していますので、あまりメンテナンス性がよくありません。いくつものコントローラからデータベースを利用し易くするために設定ファイルを別ファイルとして利用する方法に変更したいと思います。

 Configファイルの作成

12) まず、データベースに接続するためのconfigファイルを作成しますので、アプリケーションのルートフォルダにconfigフォルダを作成し、その中にmysql-config.xmlファイルを作成します。mysql-config.xmlファイルは、下記のように記述します。尚、host、username、password、dbnameは各自のサーバー設定に応じて記述して下さい。

<?xml version="1.0" encoding="utf-8"?>
 <configdata>
 <db>
 <host>mysql21.firebird.netowl.jp</host>
 <username>winroad</username>
 <password>winroad1234</password>
 <dbname>winroad_db</dbname>
 </db>
 <adapter>
 <name>Pdo_Mysql</name>
 </adapter>
 </configdata>

コントローラの修正

13) 続いてコントローラを修正します。まず、XML設定ファイルを利用するためのライブラリを読み込みます。

require_once 'Zend/Config/Xml.php';

14) TestController.phpのinitメソッドとindexActionを修正します。

本日は、ZendFrameworkの『Zend_Db』で、データベースに接続してみました。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ