データベースライブラリ(illuminate/database)
フレームワークのlalavelで使用されているよう
準備
composer.jsonを作成
cat <<'_EOT_' > composer.json { "require" : { "illuminate/database": "4.0.*" } } _EOT_
composerをダウンロードして更新
curl -s http://getcomposer.org/installer | php php composer.phar update
データベースを作成
mysql -uroot -e "create database sample01" mysql -uroot -e "use sample01; create table table1(id INT NOT NULL AUTO_INCREMENT primary key, title VARCHAR(50), memo VARCHAR(50));" mysql -uroot -e "use sample01; create table table2(id INT NOT NULL AUTO_INCREMENT primary key, title VARCHAR(50), memo VARCHAR(50));" mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'test1'@'localhost' IDENTIFIED BY 'password1'" mysql -uroot -e "use sample01; insert into table1(title, memo) value('test1', 'memoooooooooooo')"; mysql -uroot -e "use sample01; insert into table1(title, memo) value('test1-2', 'nooooooooooooo')"; mysql -uroot -e "use sample01; insert into table1(title, memo) value('test1-3', 'vvvvvvvvvvvvv')"; mysql -uroot -e "use sample01; insert into table1(title, memo) value('test1-4', 'eeeeeeeeeeeeeee')"; mysql -uroot -e "use sample01; insert into table1(title, memo) value('test1-5', 'qqqqqqqqqqqqqqq')";
実装
ソース
<?php // autoload require_once("./vendor/autoload.php"); // use use Illuminate\Database\Capsule\Manager as Capsule; // インスタンス作成 $capsule = new Capsule; // config $config = [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'sample01', 'username' => 'test1', 'password' => 'password1', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]; // 接続 $capsule->addConnection($config); $capsule->setAsGlobal(); use Illuminate\Events\Dispatcher; use Illuminate\Container\Container; $capsule->setEventDispatcher(new Dispatcher(new Container)); $capsule->setAsGlobal(); $capsule->bootEloquent(); // テーブルを指定してデータを取得 $data = Capsule::table('table1')->get(); print_r($data); // テーブルに条件を指定してデータを取得 $data = Capsule::table('table1')->where('id', '>=', 4)->get(); print_r($data); // SQLによる抽出 $data = Capsule::select('select * from table1 where id = ?', [3]); print_r($data); // トランザクション Capsule::beginTransaction(); // 追加テスト $data = Capsule::insert('insert into table2 (title, memo) values(?, ?) ', ["hoge1", "memo1"]); // ロールバック Capsule::rollback(); // 追加テスト $data = Capsule::insert('insert into table2 (title, memo) values(?, ?) ', ["hoge2", "memo2"]); print_r($data); // コミット Capsule::commit(); // データ取得 $data = Capsule::table('table2')->get(); print_r($data);
結果
[vagrant@localhost ~]$ php sample1.php Array ( [0] => Array ( [id] => 1 [title] => test1 [memo] => memoooooooooooo ) [1] => Array ( [id] => 2 [title] => test1-2 [memo] => nooooooooooooo ) [2] => Array ( [id] => 3 [title] => test1-3 [memo] => vvvvvvvvvvvvv ) [3] => Array ( [id] => 4 [title] => test1-4 [memo] => eeeeeeeeeeeeeee ) [4] => Array ( [id] => 5 [title] => test1-5 [memo] => qqqqqqqqqqqqqqq ) ) Array ( [0] => Array ( [id] => 4 [title] => test1-4 [memo] => eeeeeeeeeeeeeee ) [1] => Array ( [id] => 5 [title] => test1-5 [memo] => qqqqqqqqqqqqqqq ) ) Array ( [0] => Array ( [id] => 3 [title] => test1-3 [memo] => vvvvvvvvvvvvv ) ) 1Array ( [0] => Array ( [id] => 2 [title] => hoge2 [memo] => memo2 ) ) [vagrant@localhost ~]$
まとめ
SQL文、モデルなども使用できるようなのでどちらの方法も使える
使用メソッドなどの意味がわかっていないのでそのあたりをあとで調べる必要がありそう
モデルもあるみたいだけど今回はなし
参考2
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (4件) を見る
※実は最初にこれで知った