Php SfValidator Doctrineuque在大写字母上失败

Php SfValidator Doctrineuque在大写字母上失败,php,symfony1,symfony-1.4,doctrine-1.2,Php,Symfony1,Symfony 1.4,Doctrine 1.2,我已经在我的symfony表单中设置了一个post验证器来阻止主键的复制 在本例中,主键是两个字符的字符串。用于验证的代码: $this->mergePostValidator(new sfValidatorDoctrineUnique(array( 'model' => 'Manufacturers', 'column' => 'id', 'primary_key' => 'id' ))); 主键是大写的(例如AU)。奇怪的是,如果在字段中输入小写字母“a

我已经在我的symfony表单中设置了一个post验证器来阻止主键的复制

在本例中,主键是两个字符的字符串。用于验证的代码:

$this->mergePostValidator(new sfValidatorDoctrineUnique(array(
  'model' => 'Manufacturers',
  'column' => 'id',
  'primary_key' => 'id'
)));
主键是大写的(例如AU)。奇怪的是,如果在字段中输入小写字母“au”(即,阻止其进入数据库并触发500完整性约束错误),则验证后程序会成功触发,但如果正确输入为“au”,则似乎不会注意到重复


有什么想法吗?

这不是一个symfony sfDoctrineValidator问题。validor所做的只是在数据库中搜索现有记录。如果您使用的是“_-ci”(不区分大小写)排序规则(您使用的是mysql吗?),则搜索不会返回任何结果-验证程序被愚弄了

然后,当您插入副本时,您会从数据库中得到一个异常。尝试按以下方式更改表的排序规则:

ALTER TABLE  `table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
(你应该告诉教条帮你做:

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

)

这不是symfony sfDoctrineValidator的问题。validor所做的只是在数据库中搜索现有记录。如果您使用的是“_-ci”(不区分大小写)排序规则(您使用的是mysql吗?),则搜索不会返回任何结果-验证程序被愚弄了

然后,当您插入副本时,您会从数据库中得到一个异常。尝试按以下方式更改表的排序规则:

ALTER TABLE  `table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
(你应该告诉教条帮你做:

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

)

我真的不明白这个问题。如果你问“sfValidatorDoctrineUnique()是否区分大小写?”那么答案是“是”,因为数据库也可以区分大小写。@Blowski:我想OP是说当代码不完全相同时(与
au
vs
au
)会触发约束,但当代码完全相同时不会触发约束(
AU
vs
AU
)确实如此。您对id列使用的排序规则是什么?不太理解这个问题。如果您问“SFValidator doctrineUnique()是否区分大小写?”那么答案是“是”,因为数据库也可以区分大小写。@Blowski:我想OP是说当代码不完全相同(
au
vs
au
)时,约束会触发,但当代码完全相同(
au
vs
au
)时,约束不会触发,这是事实。您对id列使用的排序规则是什么?