我正在以这种方式创建我的学说记录:
$user = new User();
$user->fromArray($_POST);
$user->save();
这会引发异常:
Uncaught exception 'Doctrine_Validator_Exception' with message 'Validation failed in class User 1 field had validation error: * 1 validator failed on dni (type)
当然,“dni”字段的类型为:integer,HTTP POST将所有值都设置为字符串。这就是验证失败的原因。传递验证的唯一方法是:
$_POST['dni'] = (int) $_POST['dni'];
但它“感觉”错了。 作为一个注释,我正在使用集成到CodeIgniter中的Doctrine。在与Symfony合作时,这种情况从未发生过。
非常感谢。
答案 0 :(得分:2)
这是陈旧但没有答案,所以这里是:
$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, VALIDATE_ALL & ~VALIDATE_TYPES);
您可以指示Doctrine验证所有或不组合:类型(您的问题),长度,约束,全部和无。
您可以在global level上执行此操作。
也可能在连接级别上。
每张桌子确实如此,但我无法在doctrine orm documentation上找到它。
并且你不必担心数据库中插入了错误的数据类型,数据库不会让你和那个在教义之外的人。