様々なデータベースとの親和性が高くて扱いやすい(と思っているというか、そう信じている)CakePHP2ですが、
『ん?ではSQLiteを使うときはどう設定すればいいのかな』と公式マニュアルを漁っても、どうも的を得ない。
SQLiteはデータファイルを普通のファイルとして扱う簡易データベース的ファイル。
であるので、それにふさわしい設定を入れてあげないとちゃんと動いてくれないはず。
「どっかにないかなぁ」とググっておりましたら、ありました!
これはまさに良く的を得ております。
cakePHP2.0での SQLite3(PDO版)を使う
まずはCakeのPDO経由でアクセスするために
セオリー通りに、DATABASE_CONFIGクラス内で変数を定義します。
public $sqlite3 = array(
'datasource' => 'Database/Sqlite',
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'dummy.sqlite3',
'prefix' => '',
);
そして、SQLiteを使うためには、どのディレクトリにファイルが存在するか教えておかねばなりません。
その設定はコンストラクターで以下のようにするのですね。
function __construct(){
// SQLite用データベースファイルの格納先
// [app_name]/tmp/sqldata/
$dir = ROOT.DS.APP_DIR .DS. 'tmp'.DS.'sqldata'.DS;//-(1)
$this->sqlite3['database'] = $dir. $this->sqlite3['database'];
}
なるほどぉ。(1)の肝は”ROOT.DS.APP_DIR”で、こうしておくことでCakePHPのディレクトリ構成をそのまま引き継ぎ、それ以降をSQLiteの配置ディレクトリに合わせて記述してあげれば、アップロードしたらすぐ動くという具合になるのですね。
わっかりました!
参考サイト:
http://miztools.so.land.to/php5_list/eat_cake/cake2/edit/sqlite3
PDOにもっと詳しくやさしく知りたい方は PDOでサクサクDB開発 に目を通しましょう。
※「一度目を通しておけ」とはザッと軽く読むことだと誤解してました。実はその逆で「よく読んでおけ」ということです。