【CakePHP2】SQLite3を使用する。テーブル定義はphpMyAdminで

CakePHP2でSQLite3を使うためのメモです。テーブル定義はphpMyAdminで行いました。

database.phpの作成

phpMyAdminでデータベース作成、テーブル定義の後、Bakedatabase.phpを作成します。

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()で、データベースのパスを定義しました。

database.php
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を覚えたほうが良いと思いました。