Tôi có một mẫu đăng ký trong đó người dùng có thể điền vào hai địa chỉ email (email1 & email2). Yêu cầu của tiếp thị là họ cần phải là duy nhất (duy nhất như trong nếu chúng tôi có 10 người dùng, thì sẽ có 10 * 2 = 20 địa chỉ email duy nhất).cakephp isUnique cho 2 trường?
Hệ thống đã được xây dựng trên cakephp, vì vậy điều tôi muốn biết là, có điều gì đó tương tự với tính năng isUnique (duy nhất trong một trường) có thể thực hiện việc này ngay? Hay tôi phải tự mình viết mã này? Cảm ơn trước.
EDIT: xây dựng trên ví dụ của Richard, điều này đã làm việc cho tôi:
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);
}
Lưu ý rằng các phiên bản mới hơn của CakePHP2.x hỗ trợ một mảng cho http://book.cakephp.org/2.0/en/models/data-validation.html#Model::Validation::isUnique để cho phép nhiều trường theo mặc định hiện nay. – mark