在CakePHP应用程序中,对于考虑到数据库中的唯一约束,在模型中使用相同的验证检查有什么好处?
我理解使用JS验证的好处,但我相信这个模型验证会给数据库带来额外的麻烦。我100%确定在数据库中进行了某些验证,因此模型验证将是多余的。
我看到的唯一好处是应用程序可以识别错误并相应地为用户调整视图(重新填充字段并在适当的字段上显示错误消息;改善用户体验),但这可以在存在约束命名约定的情况下实现,因此应用程序可以理解保存的问题所在(现在可以使用现有的方法吗?)
发布于 2010-06-05 09:30:08
更快的响应时间,更少的数据库负载。离客户端越远,你就可以进行验证,比如JavaScript,速度就越快。主要的缺点是必须在多个层中实现相同的规则。
发布于 2010-06-05 09:36:52
如果数据库约束是由一个人编写的,而代码的其余部分是由另一个人编写的,那么他们确实不应该完全信任对方。检查边界上的东西,特别是如果它们代表组织-人的边界。例如,用户到应用程序或一个开发人员模块到另一个,或者一个公司部门到另一个公司部门。
发布于 2010-06-08 22:00:10
不要忘记可移植性的问题。在模型中强制验证使您的应用程序与数据库无关。您可以针对SQLite数据库对应用程序进行编程,然后部署到MySQL。哦,等等,你没有那个..PostgreSQL?不是吗?哦,先知,好吧。
此外,在生产中,如果在保存然后重定向的典型控制器操作中发生数据库错误,您的用户将无法盯着空白的白页(因为错误处于关闭状态,所以没有可输出的视图,并且重定向从未发生)。基本上,数据库错误在生产模式中是关闭的,因为它们可以深入了解DB模式,而模型验证错误仍然启用,因为它们是用户友好的。
但是,您有一个观点,是否有可能捕获这些数据库错误并对其执行一些有用的操作?目前没有,但如果CakePHP可以动态地将它们转换为失败的模型验证规则,防止我们重复自己,那就太好了。不同的数据库抛出不同的错误,因此每个DBO数据源都需要更新以支持它,然后才能发生错误。
https://stackoverflow.com/questions/2978751
复制相似问题