我有一个注册表格,用户可以填写两个电子邮件地址(email1 & email2)。营销的要求是,他们需要是唯一的(如果我们有10个用户,那么将有10 * 2 = 20个唯一的电子邮件地址)。cakephp是唯一的2场?
该系统已经构建在cakephp上,所以我想知道的是,是否有类似于isUnique功能(在一个字段中唯一)的功能,可以立即实现此功能?或者我注定要自己编码?提前致谢。
编辑:建在理查德的例子,这个工作对我来说:
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支持http://book.cakephp.org/2.0/en/models/data-validation.html#Model::Validation::isUnique的数组,以便默认允许多个字段现在。 – mark 2014-06-06 10:51:04