【发布时间】:2012-02-20 13:46:44
【问题描述】:
我正在尝试通过我的控制器和模型进行最简单的调用,但它不起作用。
我得到的错误是:
错误:SQLSTATE[42000]:语法错误或访问冲突:1064 你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在附近使用正确的语法 第 1 行的“ppLongerFunction2”
控制器代码为:
<?php
class UsersController extends AppController{
public $uses = array('User');
function test(){
$blah = $this->User->find('all');
$u = $this->User->ppLongerFunction2();
$this->set(compact('blah', 'u'));
}
}
模型是:
<?php
class User extends AppModel{
public var $name = 'User';
var $displayField = 'username';
var $useTable = 'users';
public function ppLongerFunction2(){
$something = $this->find('all');
return $something;
}
}
我在哪里搞砸了?
堆栈跟踪:
#0 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(436): PDOStatement->execute(Array)
#1 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(403): DboSource->_execute('ppLongerFunctio...', Array)
#2 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(647): DboSource->execute('ppLongerFunctio...', Array, Array)
#3 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(589): DboSource->fetchAll('ppLongerFunctio...', Array, Array)
#4 C:\wamp\www\lib\Cake\Model\Model.php(720): DboSource->query('ppLongerFunctio...', Array, Object(AppModel))
#5 C:\wamp\www\app\Controller\UsersController.php(11): Model->__call('ppLongerFunctio...', Array)
#6 C:\wamp\www\app\Controller\UsersController.php(11): AppModel->ppLongerFunction2()
#7 [internal function]: UsersController->test()
#8 C:\wamp\www\lib\Cake\Controller\Controller.php(473): ReflectionMethod->invokeArgs(Object(UsersController), Array)
#9 C:\wamp\www\lib\Cake\Routing\Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#10 C:\wamp\www\lib\Cake\Routing\Dispatcher.php(86): Dispatcher->_invoke(Object(UsersController), Object(CakeRequest), Object(CakeResponse))
#11 C:\wamp\www\app\webroot\index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#12 {main}
全部修复。这是一个文件名。感谢您的帮助:|笨蛋
【问题讨论】:
-
它创建的 SQL 查询是什么? (如果您还没有安装 DebugKit,它是任何 CakePHP 项目的必备工具,它可以轻松地为您提供所有这些信息 - 变量、mysql 查询运行......等等)
-
另外,可能不是主要问题,但您不需要 $uses 用户,因为您在用户控制器中。
-
我没有debutKit,另外,我可以给你看查询吗?
-
你真的应该得到 DebugKit - 100% 肯定你不会后悔的。要在视图中显示您最近的 SQL 查询,请使用:
<?php echo $this->element('sql_dump'); ?>。 (确保在Config/core.php文件中将 Debug 设置为 2。) -
我确实安装了它,但它似乎不适用于 CakePHP 2 :(。我发现模型中的函数根本没有被调用。我放了一个
die('here')和没死,Controller找不到模型函数...
标签: sql cakephp model cakephp-2.0