【CakePHP】直接SQL(クエリ)を実行する
バージョン: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; }