在从a previous question应用的答案,我试图重写的一个CakePHP的内置分页方法:为什么CakePHP在MySQL查询中使用此方法名称而不是返回结果?
的问题是,这似乎导致蛋糕做一个MySQL查询由该方法的名称简单地。显然,这并不工作,并抛出一个错误:
SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'paginateCount' at line 1
既然我已经启用调试,我可以看到,那里通常是paginateCount()查询:
1: SELECT COUNT(*) AS `count` FROM `tournaments` AS `Tournament` WHERE 1 = 1
我只是得到:
1: paginateCount
我明显误解了PHP的继承操作符。我的函数似乎是返回它重写的函数的名称,而不是它的值。
我该如何解决这个问题?
你检查代码,以确保母体:: paginateCount( )不是不能扩展的最终方法,并且您是否确保将您的类设置为扩展父类? – AlienWebguy
是的,在CakePHP中,所有的模型都扩展了一个App Model,它扩展了一个基本的Model类。这个用例推荐使用扩展和重写:http://book.cakephp.org/view/249/Custom-Query-Pagination这只是使用parent :: paginateCount(),它似乎是非标准的。 –
当CakePHP无法在模型或附加行为中找到该方法时,通常会发生这种情况。然后它将调用传递给数据源(希望它有方法并知道该怎么做),这就是为什么你会得到这个错误。我会检查他们看起来是什么东西(是在正确的模型中的方法,是蛋糕制作automodel,因为不正确的文件更新等) – deizel