我们使用 cakePHP 2.7.x。
我的问题是重写核心类——或者专门向方法添加功能而不修改核心代码。
我需要向该方法添加一些功能:
cake/lib/Cake/Model/Datasource/DboSource->BuildColumn()
文档说将整个类放在应用程序下的同一位置,然后应用程序加载器将加载它。所以我将课程复制到
marketplace/Model/Datasource/DboSource
并添加了我的代码片段。不幸的是一切都没有改变。
如果我将更改直接添加到原始方法中,则一切正常。
背景: 在该方法中,所有默认值都会被不加区别地引用。因此,类似
DEFAULT CURRENT_TIMESTAMP
的内容被解释为 DEFAULT 'CURRENT_TIMESTAMP'
并运行,这显然无法按预期工作。
具体来说,当我尝试蛋糕烘焙固定装置时,它给了我错误"Syntax error or access violation: 1067 Invalid default value for 'created'"
。
我被引导到问题的原因,以及 cakePHP 1.2.6 的建议修复,在这里: http://mamchenkov.net/wordpress/2010/04/21/unit-tests-with-cakephp/
根据文档:
您可以重写框架中的几乎每个类,例外情况是 应用程序和配置类。每当你喜欢表演这样的 覆盖,只需将您的类添加到您的 app/Lib 文件夹中,模仿 框架内部结构
所以路径应该是
marketplace/Lib/Model/Datasource/DboSource
,而不是marketplace/Model/Datasource/DboSource
很明显我的流浪机器出了问题。重新启动后,按照 Bruno Ferriera 概述的操作完美运行!
注意,如果是DboSorce,它是有缓存的,所以你必须删除缓存!