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



Nプログラマです。

CodeIgniterのDBをSQLiteに変更する方法を備忘録として残しておきます。
変更後、確認のためSQLiteにデータを保存、取得、表示ということもやっています。

サッと試したいのでMacのローカル環境 + PHPのビルトインサーバで試しました。

概要

目標

  1. CodeIgniterのDBをSQLiteに変更する
  2. データベースにテーブルを作りデータを入れて、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行目あたりに、データベースの設定が記述されているところがあります。
この連想配列のdatabasedbdriverを以下のように変更します。

変更前

'database' => ''
'dbdriver' => 'mysqli',

変更後

'database' => 'APPPATH.'/database/database.sqlite'
'dbdriver' => 'sqlite3',

APPPATHはsamples/index.phpで定義されている定数で、プロジェクト内のapplicationディレクトリの絶対パスが入っています。
これを使うことで、環境毎のパスの違いを意識しないで済むようになります。

これで使用するデータベースをSQLiteに変更することができました。
確認のために、データベースへの接続のチェックもやってみます。

データベースの作成と準備

データベースの作成

sqlite3の空データベースを作っておきます。実行時に存在しないと作ってくれるみたいですが、ここでは手動で作ります。

touch database/database.sqlite

データベースへ接続

sqlite3コマンドを使い、先程作成した空ファイルのデータベースへ接続します。

sqlite3 database/database.sqlite

テーブルを作成

ここではusersというテーブルを作成します。
シンプルに名前のカラムのみにしてあります。

CREATE TABLE users (id INTERGER PRIMARY KEY, name TEXT NOT NULL);

テーブルへデータを追加

さきほど作成したテーブルへデータを追加します。
追加したデータはあとでController側で取得して表示します。

INSERT INTO users VALUES (1, 'hoge');
INSERT INTO users VALUES (2, 'fuga');
INSERT INTO users VALUES (3, 'piyo');

データベース接続を切断

データベースでの準備を終えたので、接続を切断します。

.exit

データベースに自動で接続する設定

CodeIgniterのデフォルト設定では、各ページ毎に手動でデータベースへ接続する必要があります。
それを自動的に接続するように設定を変更します。

application/config/autoload.phpの61行目あたりにある設定を、以下のように変更します。

変更前

$autoload['libraries'] = array();

変更後

$autoload['libraries'] = array('database');  # 配列にdatabaseを追加

Controller側の修正

デフォルトだとapplication/controllers/Welcome.phpが表示されるので、ここを変更します。

先程準備したデータベースの値を取得して、その内容を表示するようにしてみます。 Welcome.phpのindexメソッドを以下のように変更します。

変更前

public function index() {
  $this->load->view('welcome_message');

変更後

public function index()
{
  $this->load->view('welcome_message');
  $users = $this->db->get('users')->result('object');
  foreach ($users as $user) {
    echo ($user->name."\n");
  }
} 

サーバを起動してページを確認

PHPのビルトインサーバを起動します。

samplesディレクトリに移動して、サーバの起動コマンドを実行します。

php -S localhost:8000

ブラウザのURLにlocalhost:8000を入力してアクセスします。

DBに入れたusersテーブルの名前(hoge, fuga, piyo)が表示されればオッケーです。

お疲れ様でした。

まとめ

今回は、CodeIgniterのDBをSQLiteに変更するという内容でした。 ちょっと練習するという時や、とりあえず動作させてみたいという時に便利だと思います。

それでは、このへんで。
バイナリー!

参考