我有一些这样的代码:
$this->validate(new \Phalcon\Mvc\Model\Validator\Uniqueness(['field' => $field]));
if (true == $this->validationHasFailed()) {
throw new SpecialInternalUniqueException();
}
这适用于除自然主键之外的所有列。也就是说,不是代理键的主键(自动递增整数)。例如,在 job_titles 表中,自然键列是“job_title”——在我们的例子中,它指的是职位名称。这个名称应该是唯一的,我希望能够在保存之前在代码中检查它。然而,不知何故,Phalcon 很高兴地忽略了它。
我现在实际上正在为此设置一个单元测试并执行类似于以下的操作:
$job_title = new JobTitles();
$job_title->job_title = 'Unique Test';
$job_title->description = 'Desc A';
$job_title->save();
$job_title2 = new JobTitles();
$job_title2->job_title = 'Unique Test';
$job_title->description = 'Desc B';
$job_title->save();
永远不会抛出异常。数据库中的最终结果是带有 Desc A 的第一个唯一测试的单列,而第二个测试没有记录。但我没有抛出异常。
有什么想法吗?
编辑:
此外,我尝试使用 ->create() 函数代替 save() 函数。