CakePHP1.3.6:任意のSQLを実行する。
CakePHPではモデルを定義するだけで、基本的なSQLは書かなくていい。
だが、それだと困る場面もあると思う。
と思ってググってみると、shinbaraさんのブログにありがたいことが書いてあった(感謝です)。
コードを見た方が早いので書いておく。
コントローラーに以下のtestアクションを書く。
function test(){ $sql='select * from sales;'; $db =& ConnectionManager::getDataSource($this->Sale->useDbConfig); var_dump($db->query($sql)); }
実行すると、以下の結果をえる。気の利いた配列で帰ってくるのはいいねぇ。
array(4) { [0]=> array(1) { ["sales"]=> array(7) { ["id"]=> string(1) "1" ["customer_id"]=> string(1) "1" ["item_name"]=> string(18) "おまんじゅう" ["amount"]=> string(3) "101" ["purchase_date"]=> string(10) "2010-12-01" ["memo"]=> string(0) "" ["timestamp"]=> string(19) "2010-12-09 12:29:48" } } [1]=> array(1) { ["sales"]=> array(7) { ["id"]=> string(1) "8" ["customer_id"]=> string(1) "8" ["item_name"]=> string(15) "かしわもち" ["amount"]=> string(4) "3000" ["purchase_date"]=> string(8) "2011-1-1" ["memo"]=> string(0) "" ["timestamp"]=> string(19) "2010-12-09 18:05:01" } } [2]=> array(1) { ["sales"]=> array(7) { ["id"]=> string(2) "10" ["customer_id"]=> string(1) "8" ["item_name"]=> string(15) "かしわもち" ["amount"]=> string(4) "3000" ["purchase_date"]=> string(8) "2011/1/1" ["memo"]=> string(0) "" ["timestamp"]=> string(19) "2010-12-09 18:13:08" } } [3]=> array(1) { ["sales"]=> array(7) { ["id"]=> string(2) "11" ["customer_id"]=> string(2) "10" ["item_name"]=> string(9) "おはぎ" ["amount"]=> string(3) "300" ["purchase_date"]=> string(8) "2011/1/1" ["memo"]=> string(18) "そうですね。" ["timestamp"]=> string(19) "2010-12-09 19:26:04" } }