1

我的 CakePHP 1.3 应用程序有问题,我不确定是代码问题还是数据库问题。

我的一个控制器中有一个非常简单的功能,每当我向该控制器添加查询部分时,我都会收到以下(令人愤怒且完全无用的)错误消息:

Missing Controller
Error: InternalError.htmlController could not be found.

Error: Create the class InternalError.htmlController below in file: 
app/controllers/internal_error.html_controller.php

这是模型 ForecastZones

class ForecastZone extends AppModel {
    var $name = 'ForecastZone';
    var $displayField = 'name';
    //The Associations below have been created with all possible keys, those that are not needed can be removed

    var $belongsTo = array(
        'State' => array(
            'className' => 'State',
            'foreignKey' => 'state_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );

    var $hasMany = array(
        'ForecastZonePoly' => array(
            'className' => 'ForecastZonePoly',
            'foreignKey' => 'forecast_zone_id',
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        )
    );

}

这是莫名其妙失败的控制器功能:

    function poly($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid forecast zone', true));
        $this->redirect(array('action' => 'index'));
    }
    $this->layout = false;

    $result = $this->ForecastZone->query("SELECT coords FROM forecast_zone_polies WHERE forecast_zone_id = $id;");
    $this->set('forecastZone', $result);
}

每当我调用此控制器操作时,CakePHP 史诗都会失败。它挂了很长时间......然后没有告诉我有用的东西,比如“数据库查询花费了太长时间”或“模型关联损坏”或类似的东西......它只是放弃并给了我这个完整的 BS 错误消息.

这不是路径问题,路径是正确的。如果我删除 $result 变量,一切正常,我会收到相应的“forecastZone is not set”错误消息。这个问题的症结似乎是一个需要永远的查询,然后 Cake 没有正确报告错误消息。

请帮我解决这个问题。非常令人沮丧......无论如何都不是“蛋糕”。

编辑:我想补充一下我最初一直在使用

$this->ForecastZone->read(null,$id);

为了获取数据,但查询的挂起和失败一直在发生,所以我切换到原始查询,希望这可能会改变一些事情。

编辑2:

我尝试了更多的东西:将此行添加到我的控制器顶部:

var $uses = array('ForecastZone','ForecastZonePolies');

然后尝试以“正确的方式”做事情仍然失败。啊!

$result = $this->ForecastZonePolies->find('all',array('conditions' => array('ForecastZonePolies.forecast_zone_id' => $id)));

$result = $this->ForecastZone->ForecastZonePolies->find('all',array('conditions' => array('ForecastZonePolies.forecast_zone_id' => $id)));

这些都不起作用。

4

1 回答 1

0

首先,我会检查 app/tmp/logs/error.log 和 app/tmp/logs/debug.log。如果这确实是一个内部错误,您应该在那里获取详细信息。

从奇怪的影响来看,我建议您将 Router::parseExtensions('html') 放在您的 app/config/routes.php 中,以确保这不是重定向问题。

于 2013-03-11T15:01:40.643 回答