使用 cakephp 2.2.4 稳定版我制作了一个高级博客应用程序。
-- 模型是:帖子、用户、视图。
失败有不同的结束方式。有时它以致命错误结束:调用未定义的方法 View::find(),有时会收到脚本试图分配一些字节的错误,有时 chrome 会显示 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 行的“渲染”附近使用的正确语法
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->query('render', Array, Object(View))
5 D:\xampp\htdocs\lib\Cake\Error\ExceptionRenderer.php(300): 模型->__call('render', Array)
6 D:\xampp\htdocs\lib\Cake\Error\ExceptionRenderer.php(300): 查看->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, Array)
16 D:\xampp\htdocs\lib\Cake\Error\ErrorHandler.php(135): trigger_error('[PDOException] ...', 256)
}
我在这个问题上停留了 2 天。
PS:我在 xampp 上,尝试过 PHP 5.3.8.1 和 5.4.1。