CakePHP-调用另一个模型导致;SQLSTATE[42000]:语法错误或访问冲突;

CakePHP-调用另一个模型导致;SQLSTATE[42000]:语法错误或访问冲突;,php,cakephp,Php,Cakephp,我是cakePHP新手,我到处寻找答案,但找不到原因。 我试图在远程模型中调用一个函数,如果我直接运行该模型,它可以正常工作,但是如果我从另一个模型运行它,它会导致“语法错误或访问冲突”错误 代码如下: Cpanel控制器 class CpanelController extends AppController { var $uses = array('Client'); public function index() { $this->Client-&

我是cakePHP新手,我到处寻找答案,但找不到原因。 我试图在远程模型中调用一个函数,如果我直接运行该模型,它可以正常工作,但是如果我从另一个模型运行它,它会导致“语法错误或访问冲突”错误

代码如下:

Cpanel控制器

class CpanelController extends AppController {

    var $uses = array('Client');

    public function index() {
        $this->Client->index();
    }

}
class ClientController extends AppController {
    public function index() {
        echo "running";
    }
}
客户机型号

class Client extends AppModel {
    public $useTable = 'users';
}
客户端控制器

class CpanelController extends AppController {

    var $uses = array('Client');

    public function index() {
        $this->Client->index();
    }

}
class ClientController extends AppController {
    public function index() {
        echo "running";
    }
}
当我从mysite/Client运行它时,它运行得很好。 但如果我尝试从mysite/Cpanel加载它,它会抛出:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index' at line 1

谢谢,

您的
用户
型号中没有
索引
功能

也许你想做的是

public function index() {
        $this->Client->find('all');
    }
否则,必须在模型内部创建索引函数

class Client extends AppModel {

    public $useTable = 'users';

    public function index() {
       // Do Something;
    }
}
如果您想在CpanelController中使用UserController,下面是代码

App::uses('UserController', 'Controller');
$UserController= ClassRegistry::init('UserController');
$UserController->index();

客户端
模型索引操作中的代码是什么?如示例所示,只是一个简单的回显,我想测试在运行任何实际代码之前,我是否看到您有
回显“正在运行”内部<代码>客户端控制器..共享整个代码。这是全部代码,现在谢谢,但我想在客户端控制器内部编写代码。假设在客户机控制器中有一个函数run_code(),如何从模型中运行它?我尝试了$this->run\u code()和$this->Client->run\u code()。谢谢你helping@DanielaVolt您可以通过将控制器调用到模型中,然后使用它来实现这一点。示例
App::import('controller','ControllerName')谢谢你的回答。这是cakePHP的正确用法吗?我在stackoverflow中读到,不建议使用导入,直接从其他控件调用控制器也不是最佳做法。这就是为什么我试图从客户机模式中删除客户机控制器。那么,直接从控制器调用控制器是一种不好的做法吗?@DanielaVolt为什么要从另一个控制器调用控制器?如果您想在控制器之间共享一些功能,您可能想看看组件。我同意@dhofset,也许可以考虑创建您自己的组件。在我看来,在另一个控制器中调用一个控制器不是一个好的做法,因为它破坏了MVC模式