【CakePHP】直接SQL(クエリ)を実行する

2019年7月29日

バージョン:CakePHP 2.2.2
CakePHPで直接SQL文を書きたい場合について。

SQLを書くことに慣れている人や、複雑な条件でデータを取得しようとすると
findを使用するよりSQLを直接書きたい場合があると思います。
その場合には、下記のようにqueryメソッドを使用します。

$sql = " SELECT .....";
$return = $this->モデル名->query($sql);

上記はコントローラーで直接実行できますが、コントローラーとモデルに分けて書きたい場合は、
下記のように分けて書くこともできます。
※個人的には、こっちの方が好きです。
・コントローラー

<?php
    
class SampleController extends AppController{
	public $uses = array('Sample');
	public function index($id) {   
		$data = $this->Sample->getData($id);
		$this->set('data', $data);
	}
}

・モデル

<?php
class Sample extends AppModel {
	public function getData($id){
		$sql = "SELECT * FROME sample WHERE sample.id = :id;";
		$params = array(
			'id'=> $id
		);
		$data = $this->query($sql,$params);
		return $data;
	}

スポンサーリンク