0 フォロワー

データベースの設定

スケルトンアプリケーションを作成し、データベース設計を完了したので、このセクションではブログデータベースを作成し、スケルトンアプリケーションでそれに接続します。

1. データベースの作成

SQLite データベースを作成することを選択します。Yii のデータベースサポートは PDO をベースに構築されているため、アプリケーションコードを変更する必要なく、簡単に異なる種類の DBMS(例:MySQL、PostgreSQL)を使用するように切り替えることができます。

/wwwroot/blog/protected/data ディレクトリの下に blog.db というデータベースファイルを作成します。SQLite が必要とするように、ディレクトリとデータベースファイルの両方をWebサーバープロセスが書き込み可能にする必要があります。Yii インストールのブログデモ(/wwwroot/yii/demos/blog/protected/data/blog.db にあります)からデータベースファイルをコピーすることもできます。また、/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql ファイル内の SQL ステートメントを実行してデータベースを生成することもできます。

ヒント:SQL ステートメントを実行するには、SQLite の公式ウェブサイト で入手できる sqlite3 コマンドラインツールを使用できます。

2. データベース接続の確立

作成したスケルトンアプリケーションでブログデータベースを使用するには、PHP スクリプト /wwwroot/blog/protected/config/main.php に保存されているアプリケーション設定 を変更する必要があります。このスクリプトは、名前と値のペアからなる連想配列を返し、それぞれがアプリケーションインスタンス の書き込み可能なプロパティを初期化するために使用されます。

db コンポーネントを次のように設定します。

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
            'tablePrefix'=>'tbl_',
        ),
    ),
    ......
);

上記の構成では、connectionString プロパティが sqlite:/wwwroot/blog/protected/data/blog.db として初期化され、tablePrefix プロパティが tbl_ として初期化される db アプリケーションコンポーネント があることを示しています。

この構成により、コード内の任意の場所で Yii::app()->db を使用して DB 接続オブジェクトにアクセスできます。Yii::app() は、エントリスクリプトで作成するアプリケーションインスタンスを返します。DB 接続が持つ可能性のあるメソッドとプロパティに興味がある場合は、そのクラスリファレンス を参照してください。ただし、ほとんどの場合、この DB 接続を直接使用することはありません。代わりに、いわゆるActiveRecord を使用してデータベースにアクセスします。

構成で設定した tablePrefix プロパティについてもう少し説明します。これは、db 接続に、データベーステーブル名にプレフィックスとして tbl_ を使用しているという事実を尊重するように指示します。具体的には、SQL ステートメントに二重中括弧で囲まれたトークン(例:{{post}})がある場合、db 接続は実行前に DBMS に送信する前に、それをテーブルプレフィックス付きの名前に変換します(例:tbl_post)。この機能は、将来、ソースコードに触れることなくテーブル名のプレフィックスを変更する必要がある場合に特に役立ちます。たとえば、汎用的なコンテンツ管理システム(CMS)を開発している場合、この機能を利用して、新しい環境にインストールする際に、ユーザーが好きなテーブルプレフィックスを選択できるようにできます。

ヒント:データを保存するために SQLite の代わりに MySQL を使用したい場合は、/wwwroot/yii/demos/blog/protected/data/schema.mysql.sql の SQL ステートメントを使用して blog という名前の MySQL データベースを作成できます。次に、アプリケーション設定を次のように変更します。

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=blog',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_',
        ),
    ),
  ......
);

タイプミスを見つけたり、このページの改善が必要だと思われましたか?
Github で編集する !