スケルトンアプリケーションを作り、データベースの設計が終わりました。 このセクションでは実際にブログデータベースを作成し、スケルトンアプリケーションとの接続を確立します。
データベースはSQLiteを使います。 Yiiのデータベースサポートは PDO の上に構築されているため、 アプリケーションコードを変更することなく、MySQLやPostgreSQLといった異なるDBMSを利用することができます。
データベースファイルとして、ディレクトリ /wwwroot/blog/protected/data に blog.db を作ります。ディレクトリとファイルはともにWebサーバプロセスと SQLite により書き込み可能である必要があります。ここでは単に /wwwroot/yii/demos/blog/protected/data/blog.db にあるブログデモのデータベースファイルをコピーすることにします。もしくは /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql にある、SQLファイルを実行することでもデータベースを生成できます。
ヒント: SQL文の実行には、
sqlite3コマンドラインツールを利用できます。 詳しくは SQLite 公式ウェブサイトを参照してください。
作ったスケルトンアプリケーションでブログデータベースを使うには、/wwwroot/blog/protected/config/main.php に保存されている PHP スクリプトでアプリケーション初期構成 を変更する必要があります。
このスクリプトはキーと値のペアで構成された連想配列を返します。 これらの値はアプリケーションインスタンスを初期化するために使われます。
以下のようにアプリケーションの components プロパティに、 db という名前のエントリを追加します。
return array( ...... 'components'=>array( ...... 'db'=>array( 'class'=>'CDbConnection', 'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db', ), ), ...... );
上記の設定は、 CDbConnection クラスの db アプリケーションコンポーネントを持ち、connectionString プロパティが sqlite:/wwwroot/blog/protected/data/blog.db に初期化されることを示します。
訳者注: yii-1.0.3以降のデモでは、'class'=>'CDbConnection'の記述はなくなっています。
この設定の場合、コードのどこからでも、Yii::app()->db を通じて DB コネクションオブジェクトにアクセスすることができます。Yii::app() は、エントリスクリプトで作成されたアプリケーションインスタンスを返すことに注意して下さい。DB コネクションのメソッドやプロパティに興味があれば、クラスリファレンスを参照して下さい。 しかし、多くの場合このDBコネクションを直接利用することはありません。 そのかわりにいわゆる ActiveRecord を利用してデータベースにアクセスします。
Be the first person to leave a comment
Please login to leave your comment.