この記事の所要時間: 約 1分25秒
CakePHPには強力なO/Rマッパーがあるので、普段はSQLを書かなくても良いのですが、DBの関数を呼ぶ時などやはりSQL文を直接書きたい場面が出てきます。
そこでSQL文を直接発行する方法です。
SQL文を直接発行するにはモデルのqueryメソッドを呼ぶ方法とdboのqueryメソッドを呼ぶ方法があります。モデルのqueryメソッドは結局内部でdboのqueryメソッドを呼んでいますので、どちらも取れる値は同じです。
PHP:
出力値です。(同じ出力なので一つだけ)
CODE:
-
array(1) {
-
[0]=>
-
array(1) {
-
[0]=>
-
array(1) {
-
["version"]=>
-
string(88) "PostgreSQL 8.2.3 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.4 (mingw special)"
-
}
-
}
-
}
これが良いなあというのはSQLを発行した結果の値がメソッドの戻り値で取得できることです。
発行するだけなら何使っても簡単なんですが、結果を取得するのにfetchしたりするのがちょっと面倒だなと感じていました。(いやコード書いてもしれてるんですが、何となく;-))
[2007/06/07追記]
というかモデルに無いメソッドは__callでもれなくSQL文として発行されるみたいです。なので↓でいけます。(これはちょっとやり過ぎな感も)
PHP:
-
<?php
-
class HogeControlle extends AppController {
-
$name = 'Hoge';
-
-
function index() {
-
$sql = "select version()";
-
}
-
}
-
?>
- Newer: PHP4なスクリプトをPHP5へ移行する際に発生する7つの問題
- Older: Ruby on Rails vs PHP?
トラックバック:1
- このエントリーのトラックバックURL
- http://www.1x1.jp/blog/2007/06/cakephp_sql.html/trackback
- Listed below are links to weblogs that reference
- CakePHP 任意のSQLを書く from Shin x blog
- pingback from CakePHP Tips | blog.ikekou.jp 11-11-11 (金) 18:02
-
[...] CakePHP 任意のSQLを書く – Shin x blog [...]
