0 follower

データベースのセットアップ

スケルトンアプリケーションを作り、データベースの設計が終わりました。 このセクションでは実際にブログデータベースを作成し、スケルトンアプリケーションとの接続を確立します。

1. データベースの作成

データベースはSQLiteを使います。 Yiiのデータベースサポートは PDO の上に構築されているため、 アプリケーションコードを変更することなく、MySQLやPostgreSQLといった異なるDBMSを利用することができます。

データベースファイルとして、ディレクトリ /wwwroot/blog/protected/datablog.db を作ります。ディレクトリとファイルはともにWebサーバプロセスと SQLite により書き込み可能である必要があります。ここでは単に /wwwroot/yii/demos/blog/protected/data/blog.db にあるブログデモのデータベースファイルをコピーすることにします。もしくは /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql にある、SQLファイルを実行することでもデータベースを生成できます。

ヒント: SQL文の実行には、 sqlite3 コマンドラインツールを利用できます。 詳しくは SQLite 公式ウェブサイトを参照してください。

2. データベースとの接続を確立する

作ったスケルトンアプリケーションでブログデータベースを使うには、/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 を利用してデータベースにアクセスします。