我正在将现有的应用程序从CakePHP 1.2升级到1.3。其中一个模型的简化版本如下:
class Load extends AppModel {
var $belongsTo = array(
'OriginCity' => array(
'className' => 'City',
'foreignKey' => 'origin_city_id',
'conditions' => '',
'fields' => '',
'order' => '',
),
'DestinationCity' => array(
'className' => 'City',
'foreignKey' => 'destination_city_id',
'conditions' => '',
'fields' => '',
'order' => '',
)
);
}
当我提出我的“负载”模型列表时,它第一次正常工作,但在那之后,我得到:
Catchable fatal error: Object of class __PHP_Incomplete_Class could not be converted to string in /home/mike/Projects/myapp/cake/libs/debugger.php on line 554
如果我手动删除缓存,它可以正常工作。
我开始一次删除app/tmp/cache/persistent
中的文件,并且在删除load.php
文件后它可以正常工作。如果我php load.php
它返回没有错误或任何东西(所以我认为它有效)。
我的理论是它第一次运行正常但是当Cake 1.3获得Load的缓存时,它会尝试查找对象名OriginCity
和DestinationCity
,当然,没有。{ / p>
那么我可以用缓存来做什么呢?或者有没有更好的方法让CakePHP 1.3指向两个不同的belongsTo
指向同一个对象类型?
编辑:我将缓存方法更改为APC,我仍然遇到同样的问题。所以我在网站范围内关闭了缓存,这很有用。
答案 0 :(得分:0)
这是因为在5.2中不再可能 打印对象,例如“print $ myObject”。相反,这将呼吁 __toString(),如果它不存在,将导致代码死亡 有一个致命的致命错误。
您可以通过向app_controller
添加__toString()来修复它 public function __toString(){
return "Needed to print an object";
}