dev-master
9999999-dev https://github.com/niikunihiro/poulsenSimple Query Builder for PHP
MIT
The Requires
- php >=5.3.3
- ccampbell/chromephp 4.*
The Development Requires
by Niidashi Kunihiro
database sql
Wallogit.com
2017 © Pedro Peláez
Simple Query Builder for PHP
PHP 5.3 で動くクエリービルダー, (*1)
Composer経由でインストールします, (*2)
```composer.json { "require": "niikunihiro/poulsen": "dev-master" }, (*3)
## 使い方 src/Config/database.php でアクセス情報を設定する ```php return array( 'default' => 'mysql', 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'username', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ), ), );
Builderクラスのインスタンスを生成し、table()メソッドで対象のテーブルを指定します。, (*4)
require_once __DIR__ .'/vendor/autoload.php';
use Poulsen\Query\Builder;
$DB = new Builder;
$query = $DB->table('users');
または、インスタンスの生成時にテーブルを指定する事も出来ます, (*5)
$query = new Builder('users');
テーブルを指定したBuilderクラスのインスタンスを取得したら、続けてデータの取得、挿入、更新、削除用のメソッドを指定して操作を行います。 Builderクラスのメソッドは直感的に扱えるようにチェーンメソッドで呼び出せるようになっています。, (*6)
配列の各要素はオブジェクトになっています。, (*7)
$users = $DB->table('users')->get();
一件だけ取得したデータはオブジェクトになっています。, (*8)
$user = $DB->table('users')->first();
$users = $DB->table('users')->select('id', 'name', 'email AS mail_address')->first();
$result = $DB->table('users')->where('name', '=', 'niikunihiro')->get();
$users = $DB->table('users')->where('name', 'LIKE', 'nii%')->get();
$users = $DB->table('users')
->where('name', 'LIKE', 'nii%')
->orWhere('name', '<>', 'poulsen')
->get();
where()メソッドの引数に無名関数を渡すと括弧で囲んだ条件を作成する事が出来ます, (*9)
$user = $DB->table('users')
->where('name', '=', 'poulsen')
->orWhere(function($query)
{
$query->whereIn('role_id', array(1, 2, 3));
$query->where('updated_at', '>', '2015-05-08 11:00:00');
})
->get();
上の例は次のSQLをビルドします, (*10)
SELECT * FROM users WHERE 1 AND name = 'poulsen' OR (role_id IN(1, 2, 3) AND updated_at > '2015-05-08 11:00:00')
テーブル結合を行う場合はjoin()メソッドを使用します。
join()メソッドは第1引数に結合するテーブル名を指定します。第2引数から第4引数まではON句の条件を指定します。, (*11)
$comments = $DB->table('articles')
->select('articles.title', 'comments.body AS comment')
->join('comments', 'article_id', '=', 'id')
->get();
外部結合を使いたい場合はjoin()メソッドの第5引数にLEFTまたはRIGHTを指定してください。, (*12)
$comments = $DB->table('articles')
->select('articles.title', 'comments.body AS comment')
->join('comments', 'article_id', '=', 'id', 'RIGHT')
->get();
values()メソッドでデータを設定し、insert()メソッドでレコードを挿入します。
insert()メソッドは挿入したレコードのIDを返します, (*13)
$now = with(new DateTime)->format('Y-m-d H:i:s');
$id = $DB->table('users')
->values('username', 'poulsen')
->values('email', 'poulsen@example.com')
->values('password', '$2y$10$/L1ScTA7H7KTfS0Josftk.qPeAygzOZOB1GClEkTlMzmmuFw7/Yxa')
->values('created_at', $now)
->values('updated_at', $now)
->insert();
with()関数はコンストラクターメソッドチェーンのためのショートカットに利用できます。, (*14)
set()メソッドでデータを設定し、update()メソッドでレコードを更新します。, (*15)
$now = with(new DateTime)->format('Y-m-d H:i:s');
$DB->table('users')
->set('rank', 3)
->set('updated_at', $now)
->update();
条件を指定する場合は、where()メソッド等を利用します。, (*16)
$DB->table('users')
->set('rank', 1)
->set('updated_at', $now)
->where('id', '=', 32)
->update();
レコードを削除する場合は、delete()メソッドで削除します。
※where()メソッド等で条件を指定しない場合は、削除を行わずにfalseを返します。, (*17)
$DB->table('users')
->where('id', '=', 32)
->delete();
クエリーログを確認するために、ChromePhpを内部で使用しています。, (*18)
ログの出力を停止する場合は、Poulsen\Query\Builderクラスのオブジェクト定数ENVIRONの値をproductionに設定します。, (*19)
namespace Poulsen\Query;
class Builder {
/** 環境 'production'の場合はログを出力しない */
const ENVIRON = 'develop';
Simple Query Builder for PHP
MIT
database sql