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

アイキャッチ画像


記事内に商品のプロモーションを含む場合があります。

Nプログラマ(@Nprog128)です。

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

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

概要

目標

  1. CodeIgniterのDBをSQLiteに変更する
  2. データベースにテーブルを作りデータを入れて、Controllerで取得結果を表示する

環境

アプリケーションバージョン
MacOSX10.13.6
CodeIgniter3.1.10
PHP7.2.12

やってみる

ダウンロードとzipを展開

まずは 公式ページ からCodeIgniterをダウンロードします。

任意の場所に配置してzipを展開します。
zip展開後、ディレクトリ名をsamplesに変更します。

そのあと、samplesディレクトリに入り設定を進めていきます。

接続するDBをSQLiteへ変更

application/config/database.phpの76行目あたりに、データベースの設定が記述されているところがあります。
この連想配列のdatabasedbdriverを以下のように変更します。

変更前

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に変更するという内容でした。 ちょっと練習するという時や、とりあえず動作させてみたいという時に便利だと思います。

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

参考

\ ちょっとお買い物 /