CakePHP 2 - Почему я получаю sql ошибку в функции модели? - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь сделать самый простой вызов через мой контроллер и модель, но это не работает.

Полученная ошибка:

Ошибка: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'ppLongerFunction2' в строке 1

Код контроллера:

<?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}

Все исправлено.Это было имя файла.Спасибо за помощь: |глупый

1 Ответ

0 голосов
/ 27 мая 2014

Похоже, что ваш контроллер пытается вызвать модель ppLongerFunction2(), но она не определена в модели и поэтому передается как функция SQL.

Что я считаю, так это то, что вы где-то пропустили следующие соглашения, и файл для Модели (User.php) не может быть найден (возможно, это user.php). В этом случае торт будет строить модель из таблицы БД внутри и, очевидно, не будет включать функцию. Вы можете проверить, так ли это, набрав в вашей модели что-то фальшивое, что определенно приведет к ошибке, например пропущенный ;, и посмотрите, возникнет ли ошибка. Если это не так, ваш файл не используется.

...