Download the PHP package ngyuki/doctrine-table-gateway without Composer
On this page you can find all versions of the php package ngyuki/doctrine-table-gateway. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ngyuki/doctrine-table-gateway
More information about ngyuki/doctrine-table-gateway
Files in ngyuki/doctrine-table-gateway
Package doctrine-table-gateway
Short Description Simple TableGateway for doctrine-dbal
License MIT
Homepage https://github.com/ngyuki/doctrine-table-gateway
Informations about the package doctrine-table-gateway
doctrine-table-gateway
doctrine/dbal をバックエンドにしたシンプルなテーブルゲートウェイ。
インストール
使用例
スコープ
scope()
で find()
や all()
の結果の範囲を絞ることができます。
スコープにはクロージャーが指定できます。クロージャーの引数の Doctrine\DBAL\Query\QueryBuilder
を用いて自由にクエリをカスタマイズできます。
イテレータ
all()
メソッドが返すイテレータにはいくつかの便利メソッドが定義されています。
例えば次のようなテーブルがあるとき、
id | name | age |
---|---|---|
1 | aaa | 16 |
2 | bbb | 24 |
3 | ccc | 32 |
それぞれ次のように返ります。
INSERT
INSERT で存在しない列名を指定しても無視されます。
スコープの第2引数で INSERT のデフォルト値を指定できます。
スコープの第2引数が省略された場合は、第1引数の key => value
の形式の値のみがデフォルト値として使用されます。
UPDATE/DELETE
update($data)
で指定したデータで、スコープのすべての行を UPDATE します。
update($data)
で存在しない列を指定しても無視されます。
update($data)
でスコープのすべての行を DELETE します。
主キーを指定したいときは by($id)
でスコープを適用してください。
スコープが適用されていないときはすべての行が対象になります。
メタデータキャッシュ
デフォルトでは TableGateway がインスタンス化されるたびにテーブル定義のメタデータをデータベースから取得しますが、次のようにキャッシュを使うことができます。
$cache
には PSR-16 の Psr\SimpleCache\CacheInterface
をインプリメントしたオブジェクトが指定できます。
cache/doctrine-adapter
doctorine のキャッシュを使う場合はは cache/doctrine-adapter が使えます。
テーブル結合
そういうのはできない。
OneToMany/ManyToOne/ManyToMany のような関係でどのようにテーブルを走査すればいいかは機械的に判断できるものではないと思うので。
どうしてもやりたければ scope()
にクロージャーを渡してクエリビルダをごちゃごちゃすればできると思います。
アンドドキュメンテッド
README.md にかかれていない機能
- query
- 指定した SQL をそのまま実行して結果セットを得る
- transactional
- コールバック関数をトランザクションの中で実行する
- ExpressionBuilder
- scope の表現が少し豊かになった