試した環境環境
- Amazon Linux AMI release 2015.09
- PHP 5.6.14
- PostgreSQL 9.2.14
導入前にその他のインストールや設定
sudo yum install php56
sudo yum install postgresql-server
sudo yum install php56-pdo
sudo yum install php56-pgsql
sudo service postgresql initdb
sudo service postgresql start
sudo su - postgres
createdb demo
createuser apache
テストで使う時はpg_hba.confの設定をtrustにすると楽
導入方法
curl -sS https://getcomposer.org/installer | php
Composer ドキュメント日本語訳
php composer.phar require j4mie/idiorm
PHPの薄いDBライブラリ「Idiorm」を使ってみた - Qiita
php composer.phar require j4mie/paris
マイグレーション
Paris自身にマイグレーションの機能はない。
"davedevelopment/phpmig": "*"
[phpmig]PHPでマイグレーション - Qiita
composer.jsonのrequireに上記を追加
php composer.phar install
[phpmig]PHPでマイグレーション - Qiita
phpmig init .
[phpmig]PHPでマイグレーション - Qiita
composerのvender/bin/phpmigなので、実行環境によってパスは変わる。
引数のパスでphpmigのマイグレーションが行えるようになる
$container['db'] = new PDO("pgsql:dbname=〜");
phpmig.phpに上記を追加する。
phpmig status
マイグレーションの状態を表示する。
動作的にgit statusに似てる。かも。
phpmig generate Table .
マイグレーション用のコードを自動生成する。
getContainer();
$db['db']->exec('
CREATE TABLE Table (
id INTEGER PRIMARY KEY
)');
}/**
* Undo the migration
*/
public function down()
{
$db = $this->getContainer();
$db['db']->exec('DROP TABLE Table;');
}
}
phpmig generateで自動生成されたクラスにはup()とdown()があるので、そこにcreate tableやdrop tableを記述する。
phpmig migrate
up()が実行される。
var_dumpをup()に埋め込んでいた場合、このコマンドを打つ時に表示される。
phpmig rollback
dowm()が実行される。
呼び出し
demo.phpの動作
demo.phpは「vendor/j4mie/idiorm/」にある。
PostgreSQLで動かす場合はちょっといじる必要がある。
ORM::configure('pgsql:dbname=demo;host=localhost;port=5432');
$db->exec("
CREATE TABLE IF NOT EXISTS contact (
id SERIAL PRIMARY KEY,
name TEXT,
email TEXT
);"
);
demo.phpはSQLiteで動くので、PostgreSQL的に書き直す。
configureにはPDOと同じような設定を書く。
$DB->exec内の一意キーはSERIALに変更する。