有趣的CakePHP失败!为什么?

时间:2012-12-28 21:27:54

标签: php cakephp

使用cakephp 2.2.4稳定版本我制作了一个高级博客应用程序。

- 模型是:帖子,用户,视图。

失败有不同的结局方式。有时它以致命错误结束:调用未定义的方法View :: find(),有时会得到一个错误,脚本试图分配一些字节,有时铬显示ERR_CONNECTION_RESET。

查看型号:

class View extends AppModel {
public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
}

我正在尝试访问的操作:

public function top_today($type = null) {


                $posts = $this->paginate('Post', array('Post.created_time BETWEEN ? AND?' => array(date('Y-m-d'),date('Y-m-d', strtotime("+1 day")))));

                if(!empty($posts)){
                    App::import('Model', 'Rating');
                    App::import('Model', 'View');
                    $rating = new Rating();
                    $view = new View();


                    $i=0;
                        foreach($posts as $post){
                            $plus = $rating->find('count', array('conditions'=>array('Rating.object_type' => 'post', 'Rating.object_id' => $post['Post']['id'], 'Rating.value' => 'plus')));
                            $minus = $rating->find('count', array('conditions'=>array('Rating.object_type' => 'post', 'Rating.object_id' => $post['Post']['id'], 'Rating.value' => 'minus')));
                            $posts[$i]['Post']['rating'] = $plus-$minus;

                            $views = $view->find('count', array('conditions'=>array('View.object_type' => 'post', 'View.object_id' => $post['Post']['id'])));
                            $posts[$i]['Post']['views'] = $views;
                            $i++;
                        }

                }
                $this->set('posts',$posts);


    }

当我不计算观看时一切顺利,但算法与评级一致!

View表包含以下列:id(A_I)user_id object_id object_type created_time。

此外,错误日志会写出大量的行:

2012-12-28 22:13:31错误:致命错误(256):[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行'render'附近使用正确的语法

0 D:\ xampp \ htdocs \ lib \ Cake \ Model \ Datasource \ DboSource.php(459):PDOStatement-execute(Array)

1 D:\ xampp \ htdocs \ lib \ Cake \ Model \ Datasource \ DboSource.php(425):DboSource-> _execute('render',Array)

2 D:\ xampp \ htdocs \ lib \ Cake \ Model \ Datasource \ DboSource.php(669):DboSource-> execute('render',Array,Array)

3 D:\ xampp \ htdocs \ lib \ Cake \ Model \ Datasource \ DboSource.php(611):DboSource-> fetchAll('render',Array,Array)

4 D:\ xampp \ htdocs \ lib \ Cake \ Model \ Model.php(788):DboSource->查询('render',Array,Object(View))

5 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ExceptionRenderer.php(300):Model-> __ call('render',Array)

6 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ExceptionRenderer.php(300):View-> render('error500','error')

7 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ExceptionRenderer.php(281):ExceptionRenderer-> _outputMessageSafe('error500')

8 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ExceptionRenderer.php(195):ExceptionRenderer-> _outputMessage('fatalError')

9 [内部函数]:ExceptionRenderer-> _cakeError(Object(FatalErrorException))

10 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ExceptionRenderer.php(173):call_user_func_array(Array,Array)

11 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ErrorHandler.php(126):ExceptionRenderer-> render()

12 [内部函数]:ErrorHandler :: handleException(Object(FatalErrorException))

最多重复100次{

13 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ErrorHandler.php(211): call_user_func('ErrorHandler :: h ...',Object(FatalErrorException))

14 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ErrorHandler.php(161):ErrorHandler :: handleFatalError(256,'[PDOException] ...','D:\ xampp \ htdocs ... ',135)

15 [内部函数]:ErrorHandler :: handleError(256,'[PDOException] ...', 'D:\ xampp \ htdocs ...',135,数组)

16 D:\ xampp \ htdocs \ lib \ Cake \ Error \ ErrorHandler.php(135):trigger_error('[PDOException] ...',256)

}

我被困在这个问题上2天了。

P.S。 :我在xampp上,尝试过PHP 5.3.8.1和5.4.1。

1 个答案:

答案 0 :(得分:2)

问题可能是您的View模型的名称,因为CakePHP已经包含View类。重命名模型(和相应的表)应该可以解决问题。