[CodeIgniter] CodeIgniterのDBをSQLiteに変更する方法

Nプログラマ(@Nprog128)です。
CodeIgniterのDBをSQLiteに変更する方法を備忘録として残しておきます。
変更後、確認のためSQLiteにデータを保存、取得、表示ということもやっています。
サッと試したいのでMacのローカル環境 + PHPのビルトインサーバで試しました。
概要
目標
- CodeIgniterのDBをSQLiteに変更する
- データベースにテーブルを作りデータを入れて、Controllerで取得結果を表示する
環境
アプリケーション | バージョン |
---|---|
MacOSX | 10.13.6 |
CodeIgniter | 3.1.10 |
PHP | 7.2.12 |
やってみる
ダウンロードとzipを展開
まずは 公式ページ からCodeIgniterをダウンロードします。
任意の場所に配置してzipを展開します。
zip展開後、ディレクトリ名をsamplesに変更します。
そのあと、samplesディレクトリに入り設定を進めていきます。
接続するDBをSQLiteへ変更
application/config/database.phpの76行目あたりに、データベースの設定が記述されているところがあります。
この連想配列のdatabaseとdbdriverを以下のように変更します。
変更前
1'database' => ''
2'dbdriver' => 'mysqli',
変更後
1'database' => 'APPPATH.'/database/database.sqlite'
2'dbdriver' => 'sqlite3',
APPPATHはsamples/index.phpで定義されている定数で、プロジェクト内のapplicationディレクトリの絶対パスが入っています。
これを使うことで、環境毎のパスの違いを意識しないで済むようになります。
これで使用するデータベースをSQLiteに変更することができました。
確認のために、データベースへの接続のチェックもやってみます。
データベースの作成と準備
データベースの作成
sqlite3の空データベースを作っておきます。実行時に存在しないと作ってくれるみたいですが、ここでは手動で作ります。
1touch database/database.sqlite
データベースへ接続
sqlite3コマンドを使い、先程作成した空ファイルのデータベースへ接続します。
sqlite3 database/database.sqlite
テーブルを作成
ここではusersというテーブルを作成します。
シンプルに名前のカラムのみにしてあります。
1CREATE TABLE users (id INTERGER PRIMARY KEY, name TEXT NOT NULL);
テーブルへデータを追加
さきほど作成したテーブルへデータを追加します。
追加したデータはあとでController側で取得して表示します。
1INSERT INTO users VALUES (1, 'hoge');
2INSERT INTO users VALUES (2, 'fuga');
3INSERT INTO users VALUES (3, 'piyo');
データベース接続を切断
データベースでの準備を終えたので、接続を切断します。
1.exit
データベースに自動で接続する設定
CodeIgniterのデフォルト設定では、各ページ毎に手動でデータベースへ接続する必要があります。
それを自動的に接続するように設定を変更します。
application/config/autoload.phpの61行目あたりにある設定を、以下のように変更します。
変更前
1$autoload['libraries'] = array();
変更後
1$autoload['libraries'] = array('database'); # 配列にdatabaseを追加
Controller側の修正
デフォルトだとapplication/controllers/Welcome.phpが表示されるので、ここを変更します。
先程準備したデータベースの値を取得して、その内容を表示するようにしてみます。 Welcome.phpのindexメソッドを以下のように変更します。
変更前
1public function index() {
2 $this->load->view('welcome_message');
変更後
1public function index()
2{
3 $this->load->view('welcome_message');
4 $users = $this->db->get('users')->result('object');
5 foreach ($users as $user) {
6 echo ($user->name."\n");
7 }
8}
サーバを起動してページを確認
PHPのビルトインサーバを起動します。
samplesディレクトリに移動して、サーバの起動コマンドを実行します。
1php -S localhost:8000
ブラウザのURLにlocalhost:8000を入力してアクセスします。
DBに入れたusersテーブルの名前(hoge, fuga, piyo)が表示されればオッケーです。
お疲れ様でした。
まとめ
今回は、CodeIgniterのDBをSQLiteに変更するという内容でした。 ちょっと練習するという時や、とりあえず動作させてみたいという時に便利だと思います。
それでは、このへんで。
バイナリー!
参考
Database Configuration — CodeIgniter 3.1.10 documentation
データベースの設定を参考にしました。Auto-loading Resources — CodeIgniter 3.1.10 documentation
データベースの自動接続の設定を参考にしました。