PHPITCakePHP

cakePHP2.x系 基本的なSQLクエリの発行方法

cakephpのヘルパーで作成するsql文って最初は凄くわかりにくいんですよね。 でも慣れると、これはこれで良いと思えるようになります。 ただ、cakePHP2系の情報が少ないので、基本的なSQLクエリの発行について書いていきます。

insert、update文

両方ともupdate文を使用します。

public function setUserData($param) {
 $data = array(
  "id"       => null,
  "name"     => $param['name'],
  "password" => md5($param['password']),
 );
 return $this->save($data);
}

試しに書いてみるとこんな感じ。 テーブル名は、基本はこのメソッドを記述しているモデルと同じものになるので書く必要がありません。 data配列のキーは、DBのカラム名 は、保存したい値を入れてやります。 idカラムは、主キー制約とauto_incrementが設定してあります。 もし、idの値が設定されていた場合、 主キー制約で重複が認められないので、update文が実行されます。 もし、idの値がnullだった場合 auto_incrementで重複しない一番新しい数字でidが生成されます。 なので、上記の例文の場合は、insert文を実行していることになります。 例文をsqlに書きなおすとこうですね

insert into モデル名 (id, name, password) values(null, $param['name'], md5($param['password']));

select文

public function getUserName($user_id){
 $options = array(
  'conditions' => array(
   'user_id' => $user_id,
  ),
  'fields' => array(
   'id',
   'name',
  ),
 );
 return $this->find('all', $options);
}

これは、user_idを基にそのユーザのidと名前を取得していますね。 option配列の中にある fieldというのは、SELECT句 conditionsというのは、WHERE句 を表しています。 これをsqlに書きなおすとこんな感じです。

select id, name from モデル名 where user_id = $user_id;