【CakePHP2】SQLite3を使用する。テーブル定義はphpMyAdminで
CakePHP2でSQLite3を使うためのメモです。テーブル定義はphpMyAdminで行いました。
database.phpの作成
phpMyAdminでデータベース作成、テーブル定義の後、Bakeでdatabase.phpを作成します。
class DATABASE_CONFIG
{
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'xxxx',
'password' => '0000',
'database' => 'cake',
'prefix' => '',
//'encoding' => 'utf8',
);
}
スキーマファイルの作成
続いてschema.phpを作成します。XAMPPコントロールパネルのShellをクリックして、黒い画面を起動します。
開発フォルダまで移動したあと、以下のコマンドを実行します。
Console\cake schema generate -f
Config/Schema/schema.phpが作成されました。phpMyAdminにて定義した内容が出力されています。もう一度、Shellを使うのでこのまま黒い画面を開いておきます。
SQLite3 データベースの作成
作成したschema.phpからSQLite3データベースを作成します。
database.php 修正
database.phpをSQLite用に修正します。今回はtmpディレクトリ内にdbディレクトリを用意し、そこへSQLite3データベースを置くことにしました。ローカル環境と本番環境でパスを書き換えるのは面倒なので__construct()
で、データベースのパスを定義しました。
class DATABASE_CONFIG
{
function __construct() {
$this->default['database'] = TMP. 'db'. DS. $this->default['database'];
}
public $default = array(
'datasource' => 'Database/Sqlite',
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => 'cake.sqlite3',
'prefix' => '',
'encoding' => 'utf8'
);
// public $default = array(
// 'datasource' => 'Database/Mysql',
// 'persistent' => false,
// 'host' => 'localhost',
// 'login' => 'xxxx',
// 'password' => '0000',
// 'database' => 'cake',
// 'prefix' => '',
// //'encoding' => 'utf8',
// );
}
スキーマシェル
最後にCakePHPのスキーマシェルでSQLiteデータベースを作成します。黒い画面へ戻ります。
Console\cake schema create
Are you sure you want to drop the table(s)? (y/n)
[n] > n
Are you sure you want to create the table(s)? (y/n)
[y] > y
おわりに
簡単にできましたが、型などを考えるとSQLite browserを使用したり、SQLを覚えたほうが良いと思いました。