Cakephp で2重登録の回避

2010年1月24日日曜日
  • このエントリーをはてなブックマークに追加
2重登録をどうやってチェックしようか悩んでいたところ、

ここにヒントがありました。
↓ ↓ ↓

Preventing Duplicate Form Submissions in CakePHP


マニュアルにもありましたが、http://book.cakephp.org/ja/view/432/postConditions

postConditionsというメソッドがあるらしい。。。

そのまま使うと、$this->dataをすべて対象として扱うので、$this->dataにカラムがなかったりするとエラー。

どうするんだ?と思って中身をのぞいてみると、

array_key_existsでチェックしているもよう。。。

とりあえず、

<?php
if ($this->User->hasAny($this->postConditions($this->data,array('User.login_id'=>''),null,true))) {
$this->Session->setFlash('既に登録されています','/flash/error');
}else{
$this->User->save();
$this->Session->setFlash('登録ありがとうございます','/flash/success');
}
?>

という感じに渡したら、
SELECT COUNT(*) AS `count` FROM `users` AS `User` WHERE `User`.`login_id` = 'admin'
という感じのSQLをつくってくれました。

いつも(?)のように $opにはarray('User.login_id')だけでいいかと思ってましたが・・・。
array('User.login_id'=>'')
値は特にしていしなくても勝手に代入してくれてるみたいです。

トークンでチェックとかしてみたいけどやりかたがよく分かりません・・・。

ラベル:


0 件のコメント:

コメントを投稿