モデルに関係なくSQLを発行する

2008/03/26 | cakePHP

cakePHPではモデル(データベースのテーブル)とコントローラが密接に関連している。だからコントローラでデータベース内のデータを取得する際、通常は(あらかじめどのテーブルを使うか決められた)モデルを介してデータを取得するため、モデルで指定されたデータ以外を取得しようとするとエラーになったりすることがある(単にやり方がまずいだけなのだが)。
こういうときはデータベースに直接SQLを投げるのが手っ取り早い。cakePHPらしからぬ記述にはなってしまうが、個人的にはこれで十分。ノーマルな処理はcakePHPのノーマル処理に従い、一部の例外は直接SQLを発行することで進めることにした。
データベースに直接SQLを投げる方法は以下の記述を使用する。

$db=& ConnectionManager::getDataSource(‘default’);
$result=$db->query($sql);

これ、多分第二引数でキャッシュするか否かをbool値で与えるんだろうと思う(調べるの面倒なのでこのまま続行)。

SQLを書かなくてもプログラムが書けるところがcakePHPのいいところなのだが、直接SQLを書くことができるようになることで、より幅広く使えるようになるはずだ。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net