スポンサーリンク

CakePHP3のORMで,生のSQLを実行したり変数値をバインドする方法のテンプレート

毎回コピペが面倒なのでここにまとめます。

変数値のバインドをしない場合

<?php

use Cake\Datasource\ConnectionManager;


      // SQL組み立て
      $sql = <<< EOSQL

~SQLを書く~

EOSQL;

      // SQL実行
      $connection = ConnectionManager::get('default');
      $results = $connection->execute( $sql )->fetchAll('assoc');

?>

変数値をバインドする場合

SQL内で不明の値は「?」と書く。

<?php

use Cake\Datasource\ConnectionManager;


      // SQL組み立て
      $sql = <<<EOSQL

~SQLを書く~
  WHERE
    val1 = ?

EOSQL;

        // SQLバインド
        $conn = ConnectionManager::get('default');
        $statement_obj = $conn->prepare($sql);
        $statement_obj->bind( 
          [ "バインドしたい値" ], // 値
          [ "string" ] // 変数型
        );

        // SQLをdebug
        //return [[$statement_obj->queryString, ""]];
        
        // SQL実行
        $statement_obj->execute();
        $rows = $statement_obj->fetchAll('assoc');

?>