CakePHP(3.x)、Connectionクラスから対話ステートメントを実行する。

テーブルから値を取得する際はテーブルクラスからクエリビルダを介して値を取得することが多いですが、複雑なsqlを実行したいときはConnectionクラスから対話ステートメントを実行すると良いです。

$results = $connection
    ->execute(
         'SELECT * FROM articles WHERE id = :id',
         ['id' => 1]
    )
    ->fetchAll('assoc');

上記のようにexecuteの2番目の引数パラメータを指定して、そのキーにセミコロンを付けた文字列をプレースホルダーとして利用する事ができます。

意図した文面になっているかどうかはquery Logから確認できるので、確認しながら実行するといいかもしれません。