我已经在我的symfony表单中设置了一个帖子验证器来停止重复主键。
主键是此实例中的双字符字符串。用于验证的代码:
$this->mergePostValidator(new sfValidatorDoctrineUnique(array(
'model' => 'Manufacturers',
'column' => 'id',
'primary_key' => 'id'
)));
主键是大写(例如AU)。奇怪的是,后验证器触发成功是小写'au'被输入到字段中(即阻止它进入数据库并触发500完整性约束错误),但如果输入正确为'AU',它似乎没有注意到重复。
有什么想法吗?
答案 0 :(得分:3)
这不是symfony sfDoctrineValidator问题。所有这些验证方法都是在数据库中搜索现有记录。如果您使用的是“_ci”(不区分大小写)排序规则(您使用的是mysql吗?),则搜索不返回任何内容 - 验证程序被欺骗。
然后,当您插入副本时,您将从数据库中获得异常。尝试更改表的排序规则:
ALTER TABLE `table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
(你应该告诉学说为你做这件事:
MyTable:
options: { collate: utf8_bin, charset: utf8 }
)