k01ken’s b10g

He110 W0r1d!

CakePHP3でSQL文を直接書く方法

開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+CakePHP 3.5.8。

できれば、クエリービルダーを用いてSQL文を書かずに済ませたいところですが、SQL文が複雑になるほど、クエリービルダーではどうやって書いてよいか分からず、直接、SQL文を書いたほうが、SQL文を考えてから、クエリービルダーに置き換える作業がなくてラクだと思い、調べました。

(例: UsersController.php

<?php

// namespaceより下でclassよりも上の部分に書く
use Cake\Datasource\ConnectionManager;

// class内にtestアクションを追加する
public function test(){
	$sql = 'SELECT * FROM users WHERE id=2';
    
	$connection = ConnectionManager::get('default');
	$results = $connection->execute($sql)->fetchAll('assoc');

	$this->set('result',$result);
}

?>

(例 test.ctp側

<?php var_dump($result); ?>

動作結果
f:id:k01ken:20180422001430p:plain

参考リンク
cakephp3 SQLを直接入力し実行するには | QUALIA SYSTEMS