FuelPHP

FuelPHP - データベースに関連する機能

データベースの接続設定

fuel/app/config/db.phpに基本的な情報を入れる
このファイルがまず読み込まれ、その次に環境毎のファイルが読み込まれる

return array(
  'default' => array(
    'type'           => 'mysqli',
    'connection'     => array(
      'hostname'       => 'localhost',
      'port'           => '3306',
      'database'       => 'データベース名',
      'username'       => 'ユーザ名',
      'password'       => 'パスワード',
      'persistent'     => false,
      'compress'       => false,
    ),
    'identifier'   => '`',
    'table_prefix'   => '',
    'charset'        => 'utf8',
    'enable_cache'   => true,
    'profiling'      => false,
  ),
);

fuel/app/config/development/db.phpに開発環境用の設定をする
データベース名は開発用のものを用意するのと
ユーザ名とパスワードはproduction用とは違うのを用意すると人為的なミスによるデータ消失とかを防げる

return array(
    'default' => array(
        'connection' => array(
            'hostname' => 'localhost',
            'port' => 3306,
            'database' => '開発用データベース名',
            'username' => 'ユーザ名',
            'password' => 'パスワード',
        ),
        'profiling' => true,
    ),
);

fuel/app/config/test/db.phpにテスト環境用の設定をする

return array(
    'default' => array(
        'connection' => array(
            'hostname' => 'localhost',
            'port' => 3306,
            'database' => 'データベース名',
            'username' => 'ユーザ名',
            'password' => 'パスワード',
        ),
        'profiling' => true,
    ),
);

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

マイグレーションの設定ファイルfuel/core/config/migrations.phpfuel/app/config/developmentフォルダとfuel/app/config/testにコピーする

マイグレーションファイルの生成

oil generate migration create_form name:string\[50\] email:string\[100\] comment:string\[400\] ip_address:string\[39\] user_agent\[512\] created_at:int updated_at:int

マイグレーションを実行しデータベースにテーブルを作成

oil refine migrate
FUEL_ENV=test oil refine migrate
FUEL_ENV=production oil refine migrate

バージョンを指定してマイグレーションを戻す

oil r migrate:down -v=0

マイグレーションでsimpleauthのuserを自動生成

oil refine migrate --packages=auth
FUEL_ENV=test oil refine migrate --packages=auth
FUEL_ENV=production oil refine migrate --packages=auth

を叩く

テーブルからのコード生成

oil refine fromdb: タイプ テーブル名[, テーブル名[, ....]]

テーブルからコードを自動生成する
タイプ: {model|scaffold}

ORM

Def. ORM(Object-Relational Mapping)
オブジェクト指向でのオブジェクトをデータベースのレコードにマッピングすること

ORMのWhere句でBetweenを使用する

$result = Model_Process::find('all', array(
  'where' => array(
    array(
      'updated_at',
      'between',
      array($date.'000000', $date.'235959'),
    ),
  )
));

ORMでトランザクション処理

http://qiita.com/hatahata/items/05bf95c3613a5ca9ee66

PHPExcel Package

http://www.qript.co.jp/blog/technique/1726/

http://github.com/muhittin/fuelphp_excelを/fuel/packagesに格納し、excelにフォルダ名を変更

ORMのメモリリーク問題

FuelPHPでのメモリリーク?について - Qiita
FuelPHPのOrmとキャッシュについてのTips | 東北ギーク

ORMでレコードを取得・追加するときにキャッシュとしてスタティック変数に保存するのが原因とのこと
普段ORMを利用する分にはキャッシュするのはいいことかもしれないが、バッチ処理だと致命的

FuelPHPでのメモリリーク?について - Qiita
の記事になるコメントにある応急処置がいい感じ
モデルにキャッシュを消すための関数を作る

FuelPHPでテーブルのレコードをカウントする方法

\DB::count_records('テーブル名');

-FuelPHP