スケルトンアプリケーションを作成し、データベース設計を完了したので、このセクションではブログデータベースを作成し、スケルトンアプリケーションでそれに接続します。
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
コマンドラインツールを使用できます。
作成したスケルトンアプリケーションでブログデータベースを使用するには、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 で編集する !
Windows の IIS での Sqlite DSN
Windows と IIS を使用している場合、sqlite の接続文字列は次のようになります。
sqlite
sqlite を使ったことがない人のために…
sqlite3 データベースを SQL ダンプからロードする最速の方法
コマンドラインから sqlite データベースを作成する最速の方法は、次のようになります。
[sh] sqlite3 blog.db < schema.sqlite.sql
コメントするには、サインアップ または ログイン してください。