CakePHP 2.10无对应Model类时PrivacyPolicy可作为模型查询的原因是什么?
问题解答
这是CakePHP 2.x版本的原生机制导致的,具体原因如下:
- 框架自带缺失模型自动实例化能力:当你调用未手动创建对应类文件的模型时,框架不会直接报错,会自动生成一个继承自
AppModel的动态临时模型实例,无需存在PrivacyPolicy.php模型文件即可完成初始化。 - 自动匹配数据表无需额外配置:框架会按照「驼峰命名转下划线+复数」的规则自动映射对应数据表,
PrivacyPolicy会默认匹配数据库中的privacy_policies表,只要该表真实存在、且主键为默认的id字段,框架会自动识别表结构,直接支持find、save等基础数据库操作,不需要额外配置数据库关联。 - 该机制的触发场景不限制:不管你是通过控制器的
$uses属性声明该模型、通过$this->loadModel('PrivacyPolicy')方法加载,还是通过其他关联模型间接调用,只要对应模型类不存在,都会触发该自动生成逻辑。
如果此时数据库中不存在privacy_policies表,才会抛出数据表不存在的错误。另外这种动态生成的模型只能使用AppModel提供的默认方法,不支持自定义业务逻辑、验证规则、模型关联,如果你需要定制相关能力还是要手动创建对应的模型类。
内容的提问来源于stack exchange,提问作者Sandeep Maurya
相关产品推荐
相关产品推荐

