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