SQL_SketchなるPHPのライブラリ書いてます
→ taiyoh/sql-sketch-php - GitHub
これは何かというと、PHPでもSQL::Maker的なモジュールが欲しかったので、書いてみました、ということです。510行くらいしかなくて、あんまりコーナーケースに対応したSQLは書けないです。でも、よくあるSQL文の7割くらいはカバーできるんじゃないか、と思ってます。あと、MySQL専用だったりします><
使い方は二種類あって、一つはPropelモードで、もう一つがlithiumモードです(単なる呼称)。以下を見てみると、その名前のわけが分かるかも。
// SELECT foo FROM hoge WHERE hoge.type = 'bar' ORDER BY hoge.id DESC LIMIT 3; // というSQLを出力したいとします。 // Propelモード $sk = new SQL_Sketch('hoge'); $sk->add('hoge.type', 'bar'); $sk->addDescendingOrderByColumn('hoge.id'); $sk->setLimit(3); list($sql, $bind) = $sk->select(); // lithiumモード $sk = new SQL_Sketch('hoge'); list($sql, $bind) = $sk->select(array( 'conditions' => array( 'type' => array('=' => 'bar') ), 'order' => array('id' => 'DESC'), 'limit' => 3 ));
あくまでベースはPropelモードで、lithiumモードはsyntax sugarみたいなものです。
元々は、symfony上でアプリケーションを書いている時、生のSQL文を作成するのに文字列連結するのがとにかく見づらかったので、Propelの同じような記法で作れるようにしたい、と思ったのが発端です。PHPのフレームワークはフルスタックなものが多すぎて、こういうミドル的なポジションのモジュールが全然育ってないですね。だからフレームワーク毎の学習コストがどんどん上がっていくんだと思うけど。。。