我正在创建一个CakePHP应用程序,它有一个编辑表单,其中包含一个名为air_id的文本框。在我的表中,我使用project_id和air_id作为复合主键。因此,在更新air_id时,我需要验证唯一性。 我的表格结构如下:
project_id air_id
1 test@test.com
1 test1@test.com
目前我正在使用cakephp3.0,我正在使用带有范围的validateUnique规则, 以下是我的代码:
$validator
->add('air_id', [
'unique' => [
'rule' => ['validateUnique', ['scope' => 'project_id']],
'provider' => 'table',
]
]);
我的控制器就像这样
$projectCustomers = $this->ProjectCustomers->newEntity($formData);
现在每次都会给出验证消息。我需要的是当我将值test@test.com更改为test1@test.com时,它应该引发错误,如果我将其更改为其他值,则不应该引发错误。我的验证有问题吗?
答案 0 :(得分:2)
CakePHP独特字段规则:
我们有cakephp独特的字段规则可能更好:
在你的表格中(例如UsersTable.php):
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(
['air_id', 'project_id'],
'Your validation error here.'
));
return $rules;
}
在表格的顶部,不要忘记包含这个类:
use Cake\ORM\RulesChecker;