DEVELOPERS BLOGデベロッパーズブログ

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

加藤 正人

2017/02/20

CakePHP3 と SQLite

 

PHP 5.x 以降には、SQLite というデータベースがバンドルされている。CakePHP には SQLite 用のドライバが標準添付されており、簡単に利用できる。

今回は CakePHP 3 で SQLite を使用する方法を調べてみた。

SQLite の特徴

CakePHP 3 から SQLite を利用する

CakePHP 3 から SQLite を利用する場合は、 Datasources セクションの定義、Table 定義時のコネクション設定、および Table 初期設定などが必要となる。

Datasources セクションの定義

config/app.php の 'Datasources' セクション ('Datasources' => [ …【中略】… ] として定義) に、以下のコードを追加する。

これにより 'SQLite' というデータソース名が定義される。(他のデータソース定義と重複しなければ別の名称でも可。)

なお、'database' 項に指定できるのは「ファイル名」のみで、URI 記法は利用できない。これは CakePHP 3 の SQLite ドライバーの制限である。このため、接続パラメータやデータベースオプションをファイル名に埋め込む方法は利用できない。またパスやサブフォルダをつけない純粋な ':memory:' はファイル名として予約されており、この文字列を指定した場合はデータベースはメモリー内にのみ配置されファイルは使用しない。(パスなどを付加した、例えば './:memory:’ 等はメモリー内データベースファイル指定とは認識されず、ファイルとして処理しようとする点に注意)

テーブル定義

SQLite を使用するテーブルの定義で、データソースとして 'SQLite' を指定する。CakePHP 3 ではプロパティではなく、データソース名文字列を返す静的メソッドで定義する。これにより、テーブルオブジェクト生成時に 'SQLite' データソースを使用することを明示できる。

 

なお、テーブルデータベースの実体は通常はデータソースの 'database' 項で指定した単一のファイルに格納され永続的なものになるが、':memory:' でメモリー内データベースを指定した場合はデータベースは当該データベースへの接続がクローズされると直ちに破棄される。また、同じメモリー内データベースに接続できるのは、同一プロセス内で生成された接続に限られる点に注意。

関連タグ: CakePHP3  SQLite3 

関連エントリー

CakePHP3 のユーザー定義ファインダーのオプション

PHP3 でデバグモードを一旦無効化した後再度有効化するとDebugKit が見つからない

CakePHP3 で JSON 応答のための定番処理

CakePHP3 でタイムゾーン変換

バージョンを指定して CakePHP をインストールする

CakePHP サイトの移転時の注意

CakePHP3 のアソシエーションで、紐づけ用フィールドを指定する

CakePHP3 のコマンドライン実行

CakePHP3 の Virtual Field と accessor (Getter)

CSRF token mismatch

2019/07/04
CSRF token mismatch

CakePHP3 で created と modified に日付が自動付与されない場合のメモ

CakePHP3 で

CakePHP3 の JSON 出力でエラー

CakePHP3 のミューテータで書き換えたデータが保存されない件

CakePHP3.6.2 のタイムスタンプ調整 (XSERVER の場合)

CakePHP3 で DebugKit が表示されない

最新版 composer.phar のインストール

PHP 7.x で CakePHP 3.x を使う

Remi's PHP5.6 と intl モジュール

X2 と CakePHP 3.x

2017/05/23
X2 と CakePHP 3.x

CakePHP3 の便利機能

CakePHP3 でテーブル不使用フォームのバリデーション

CakePHP3 のファインダーメソッド

CakePHP 3.x の accessor と mutator 【その2】

CakePHP 3.x の accessor と mutator

XSERVER X10 に CakePHP 3.x をインストールする

XSERVER で CakePHP 3.x が Fatal error

CakePHP 3.x インストールメモ

Composer メモ

2015/06/13
Composer メモ