多个belongsTo会创建缓存错误

时间:2011-02-12 21:49:16

标签: caching cakephp-1.3

我正在将现有的应用程序从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的缓存时,它会尝试查找对象名OriginCityDestinationCity,当然,没有。{ / p>

那么我可以用缓存来做什么呢?或者有没有更好的方法让CakePHP 1.3指向两个不同的belongsTo指向同一个对象类型?

编辑:我将缓存方法更改为APC,我仍然遇到同样的问题。所以我在网站范围内关闭了缓存,这很有用。

1 个答案:

答案 0 :(得分:0)

这是因为在5.2中不再可能 打印对象,例如“print $ myObject”。相反,这将呼吁 __toString(),如果它不存在,将导致代码死亡 有一个致命的致命错误。

您可以通过向app_controller

添加__toString()来修复它
 public function __toString(){
     return "Needed to print an object";
 }