【发布时间】:2010-03-17 09:59:20
【问题描述】:
我有一个注册表单,用户可以在其中填写两个电子邮件地址(email1 和 email2)。市场营销的要求是它们必须是唯一的(如果我们有 10 个用户,那么就必须是唯一的,那么就会有 10*2=20 个唯一的电子邮件地址)。
该系统已经建立在 cakephp 上,所以我想知道的是,是否有类似 isUnique 功能(在一个领域中唯一)可以立即执行此操作?还是我注定要自己编写代码?提前致谢。
编辑:基于 Richard 的示例,这对我有用:
function checkUnique($data, $fields) {
if (!is_array($fields)) {
$fields = array($fields);
}
foreach($data as $key) {
$checks = $key;
}
if (empty($checks)) {
return true; //allow null
}
foreach($fields as $key) {
$tmp[$key] = $checks;
}
if (isset($this->data[$this->name][$this->primaryKey])) {
$tmp[$this->primaryKey] = "<>".$this->data[$this->name][$this->primaryKey];
}
return $this->isUnique($tmp);
}
【问题讨论】:
-
请注意,较新版本的 CakePHP2.x 支持 book.cakephp.org/2.0/en/models/… 的数组,现在默认允许多个字段。
标签: cakephp unique-index cakephp-model