バリデーションでメールアドレスの重複登録チェック2

更新時にも使えるように重複登録チェックをバージョンアップしました。

http://sane.justblog.jp/blog/2008/02/post-9f5d.html#comment-8397038
新規登録はこれでOKだと思いますが、更新の時は、エラーになってしまうのでは?
投稿: toshiyuki_saito | 2008/02/11 22:48

確かにその通りです。

 

//テーブル名のゲッタ
function getTableName()
{
return $this->name;
}
//重複チェックのバリデート
function checkDuplicate($data)
{
$cond = array(key($data) => '= '.current($data));
if(($id = $this->getID()) !== false){
$cond[$this->getTableName().'.id'] = '!= '.$id;
}
return ($this->findCount($cond) === 0) ? true : false;
}

これで更新OKなはず。

はじめ $cond[‘id’] = ‘!= ‘.$id; にしたら

Warning (2): sqlite_query() [function.sqlite-query]: ambiguous column name: id [CORE\cake\libs\model\datasources\dbo\dbo_sqlite.php, line 115]
Query: SELECT COUNT(*) AS "count" FROM "mails" AS "Mail" LEFT JOIN "users" AS "User" ON ("Mail"."user_id" = "User"."id") WHERE "mail" = ‘hogehoge@example.com’ AND "id" != ‘6’
Warning (512): SQL Error: 1: SQL logic error or missing database [CORE\cake\libs\model\datasources\dbo_source.php, line 439]

idってどのidなのかわかんないよ!って怒られたのでテーブル名を入れました。

広告

バリデーションでメールアドレスの重複登録チェック2」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中