O/RマッパーとCakePHP3、QueryBuilder


ORMがあることでDBとのやり取りも言語チックに「分割」「構築」「抽象化」できると言われている。
CakePHP3だと、まるでDoctrineのようなQueryBuilderが使える。
LaravelとかFuelPHPも、似たようなスタイルになっているらしいから、これがモダンなフレームワークということなのだろう。
裏側ではPDOプリペアドステートメントが走り、SQLインジェクションなどに対して適切に対応してくれる。

    use Cake\ORM\TableRegistry;
    $articles = TableRegistry::get('Articles');


命名規則に従って、Controller名と同じ名前で作られているModelは既に呼べるようになっているが、
他のテーブルを使う場合は上のようにまずオブジェクトを取得する。

        $query = $articles->find();
        $query->where(['id' => $id]);
        $first_article = $query->first();


で、例えばこのような形でQueryBuilderの記法でデータを取得したりできるわけである。