Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Cakephp根据MySQL数据库约束自动生成验证_Database_Validation_Cakephp_Constraints - Fatal编程技术网

Database Cakephp根据MySQL数据库约束自动生成验证

Database Cakephp根据MySQL数据库约束自动生成验证,database,validation,cakephp,constraints,Database,Validation,Cakephp,Constraints,我正在寻找一个简单的解决方案,从Cakephp中的数据库约束自动生成模型中的验证规则,因为我不想用cake bake手工完成这些。因此,例如,如果数据库中的某个字段存在NOTNULL约束,则应为该字段创建“NOT empty”验证规则 那么有没有一个工具可以做这类事情呢?CakePHP默认不支持这一点,但我喜欢这个想法 但是您可以通过重载AppModel::_construct(),将代码添加到AppModel::beforeValidate()回调中,通过使用模型所使用的表的CakeSchem

我正在寻找一个简单的解决方案,从Cakephp中的数据库约束自动生成模型中的验证规则,因为我不想用cake bake手工完成这些。因此,例如,如果数据库中的某个字段存在NOTNULL约束,则应为该字段创建“NOT empty”验证规则


那么有没有一个工具可以做这类事情呢?

CakePHP默认不支持这一点,但我喜欢这个想法

但是您可以通过重载AppModel::_construct(),将代码添加到AppModel::beforeValidate()回调中,通过使用模型所使用的表的CakeSchema加载模式,并循环它返回的模式,动态构建规则,并将它们设置为$this->validate

如果您不想使用特定的模型,可以添加另一个属性,如boolean autoValidationRules。还要检查notEmpty是否尚未设置,不要自动覆盖或合并它,这取决于您的需要

编辑:试试这个行为,我只是把它拼凑起来,因为我喜欢这个主意。今晚晚些时候将添加单元测试


事实上,CakePHP中没有用于此目的的内置功能

否则,如果您不想使用控制台,您可以使用允许您设计应用程序的联机工具:模型、关系和验证规则,然后自动生成列上具有正确约束的SQL文件,您的模型具有字段、控制器和视图的相应验证规则:


您不能完全按照自己的意愿去做,但至少可以同时设计数据库的约束和验证规则,这节省了大量的时间。

beforeValidate可能是一个更好的建议(或者是一种实现beforeValidate的行为)——也就是说,在需要之前不要做任何事情+是的,由于某种原因,当我读到这篇文章时,构造函数是我想到的第一件事。