Symfoware

Symfowareについての考察blog

CodeIgniter 3でSQLite3を使用する(Debian 7 + php-fpm)

CodeIgniter 3で、データベースの使い方を調べようと思います。
お手軽に使用できるデータベースとして、SQLite3を使ってみようと思います。

http://www.sqlite.org/



接続ライブラリのインストール



SQLiteを使用するため、ライブラリのインストールを行います。
これをインストールしていないと、こんなエラーが発生します。


Fatal error: Class 'SQLite3' not found in
/var/www/ci3/system/database/drivers/sqlite3/sqlite3_driver.php on line 89




apt-getでインストールしました。


# apt-get -y install php5-sqlite







database.php



SQLiteを使用するためのdatabase.phpの記載はこのようになりました。


  1. $active_group = 'default';
  2. $query_builder = TRUE;
  3. $db['default'] = array(
  4.     'dsn'    => '',
  5.     'hostname' => '',
  6.     'username' => '',
  7.     'password' => '',
  8.     //'database' => '/var/www/ci3/application/sqlite3/test.db',
  9.     'database' => APPPATH.'sqlite3/test.db',
  10.     'dbdriver' => 'sqlite3',
  11.     'dbprefix' => '',
  12.     'pconnect' => FALSE,
  13.     'db_debug' => TRUE,
  14.     'cache_on' => FALSE,
  15.     'cachedir' => '',
  16.     'char_set' => '',
  17.     'dbcollat' => '',
  18.     'swap_pre' => '',
  19.     'autoinit' => TRUE,
  20.     'encrypt' => FALSE,
  21.     'compress' => FALSE,
  22.     'stricton' => FALSE,
  23.     'failover' => array(),
  24.     'save_queries' => TRUE
  25. );




最低限必要なのは、「database」の項目で、ここにデータベースファイルのパスを指定します。
最初、ファイルの実体は存在しなくてOKです。

この設定ファイル中で、APPPATHのようなCodeIgniterの定数も使用できます。



こんなコントローラーを作成。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         $this->load->database();
  7.     }
  8.     
  9. }



http://[サーバーIP]/sample/をブラウザで表示すると、
同時にデータベースファイルが作成されました。

547_01.png





マイグレーションによるテーブル作成



せっかくなので、マイグレーション機能を使用してテーブルを作成してみます。
データベースのマイグレーション(Library Reference - Migrations Class)


application/config/migration.phpを編集。
2箇所設定を変更します。


  1. $config['migration_enabled'] = TRUE;
  2. $config['migration_version'] = 20150217000000;





application/migrationsに20150217000000_my_table.phpを作成。

CI_Migrationを継承し、クラス名は
[Migration_] + ファイル名の日付以降。今回だと[My_Table]とします。


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Migration_My_Table extends CI_Migration {
  4.     public function up() {
  5.         
  6.         // テーブル作成
  7.         $this->dbforge->add_field(array(
  8.             'name' => array(
  9.                 'type' => 'TEXT'
  10.             ),
  11.             'title' => array(
  12.                 'type' => 'TEXT'
  13.             ),
  14.             'email' => array(
  15.                 'type' => 'TEXT'
  16.             ),
  17.         ));
  18.         
  19.         $this->dbforge->create_table('my_table');
  20.         
  21.         // 初期データを登録
  22.         $data = array(
  23.             'name' => '西住 みほ',
  24.             'title' => 'あんこうチーム',
  25.             'email' => 'miho@example.com',
  26.         );
  27.         $this->db->insert('my_table', $data);
  28.         
  29.         $data = array(
  30.             'name' => '小山 柚子',
  31.             'title' => 'カメさんチーム',
  32.             'email' => 'yuzu@example.com',
  33.         );
  34.         $this->db->insert('my_table', $data);
  35.     }
  36.     public function down() {
  37.         $this->dbforge->drop_table('my_table');
  38.     }
  39. }





マイグレーションを実行するコントローラーを作成。


  1. <?php
  2. class Migrate extends CI_Controller
  3. {
  4.     public function index()
  5.     {
  6.         $this->load->library('migration');
  7.         if ($this->migration->current() === FALSE)
  8.         {
  9.             show_error($this->migration->error_string());
  10.         }
  11.     }
  12. }





コンソールで、CodeIgniterのカレントに移動し、以下のコマンドを実行。
※ブラウザでhttp://[サーバーIP]/migrateを表示してもOK


# php5 index.php migrate




実行すると、sqliteのデータベースファイルのサイズが大きくなりました。
どうやらちゃんとテーブルの作成ができたようです。


CodeIgniter 3のユーザーガイド(User Guide)まとめ



関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/02/17(火) 21:31:46|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Debian 7にTomcat 7 + gitbucket + Jenkinsをインストールする | ホーム | CodeIgniter 3 ユニットテストをコマンドで実行する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1627-cae84ed8
この記事にトラックバックする(FC2ブログユーザー)