大写字母sfValidatorDoctrineUnique失败

时间:2011-11-05 23:27:40

标签: php symfony1 symfony-1.4 doctrine-1.2

我已经在我的symfony表单中设置了一个帖子验证器来停止重复主键。

主键是此实例中的双字符字符串。用于验证的代码:

$this->mergePostValidator(new sfValidatorDoctrineUnique(array(
  'model' => 'Manufacturers',
  'column' => 'id',
  'primary_key' => 'id'
)));

主键是大写(例如AU)。奇怪的是,后验证器触发成功是小写'au'被输入到字段中(即阻止它进入数据库并触发500完整性约束错误),但如果输入正确为'AU',它似乎没有注意到重复。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这不是symfony sfDoctrineValidator问题。所有这些验证方法都是在数据库中搜索现有记录。如果您使用的是“_ci”(不区分大小写)排序规则(您使用的是mysql吗?),则搜索不返回任何内容 - 验证程序被欺骗。

然后,当您插入副本时,您将从数据库中获得异常。尝试更改表的排序规则:

ALTER TABLE  `table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

(你应该告诉学说为你做这件事:

MyTable:
  options: { collate: utf8_bin, charset: utf8 }