Cakephp与uncon结构数据库
如何从模型中的数据库访问任何表 例如,我有Cakephp与uncon结构数据库,php,mysql,sql,cakephp,Php,Mysql,Sql,Cakephp,如何从模型中的数据库访问任何表 例如,我有索引控制器和其中的代码: $results = $this->Index->query("SELECT COUNT(*) FROM my_own_table"); Error: Database table indices for model Index was not found. 所以,据我所知,我只能访问命名与模型/控制器名称相关的表。但是如果我不能修改表的命名,并且我想访问它的数据,该怎么办呢?不。您可以访问不同的表。然而,Ca
索引控制器和其中的代码:
$results = $this->Index->query("SELECT COUNT(*) FROM my_own_table");
Error: Database table indices for model Index was not found.
所以,据我所知,我只能访问命名与模型/控制器名称相关的表。但是如果我不能修改表的命名,并且我想访问它的数据,该怎么办呢?不。您可以访问不同的表。然而,CakePHP遇到了这样一个事实,即默认情况下与索引模型关联的表不存在
换句话说,模型索引期望表“Index”存在(如果不存在,则抛出错误)。您可以执行以下两种操作之一:
创建一个索引表
将以下内容添加到索引模型:var$useTable=false代码>
如果你对索引表有任何用处,我会选择选项1。如果不打算使用索引表,请使用选项2
如果您执行第1步或第2步,您的示例将开始工作。否。您可以访问不同的表。然而,CakePHP遇到了这样一个事实,即默认情况下与索引模型关联的表不存在
换句话说,模型索引期望表“Index”存在(如果不存在,则抛出错误)。您可以执行以下两种操作之一:
创建一个索引表
将以下内容添加到索引模型:var$useTable=false代码>
如果你对索引表有任何用处,我会选择选项1。如果不打算使用索引表,请使用选项2
如果您执行第1步或第2步,您的示例应该开始工作。您不仅限于使用与控制器直接关联的模型(这只是默认行为);你可以使用任何型号
要实现所需功能,请为此表创建一个新模型,例如,MyOwnTable
,然后在控制器中,可以将此属性添加到类中:
public $uses = array('Index', 'MyOwnTable');
现在,您可以使用CakePHP内置的ActiveRecord功能访问MyOwnTable
:
$results = $this->MyOwnTable->find('count');
如果要访问其他表,只需为这些表创建模型并将其添加到$uses
属性中即可。(如果愿意,也可以在操作中使用$this->loadModel('Model')
)
如果您有一个不太可读的表名(例如my\u tb\u own\u 1\u x
或类似的名称),您可以将模型类称为人类可读的名称(例如MyTable
),并将$useTable
属性添加到模型中:
public $useTable = 'my_tb_own_1_x';
/* and change the default primary key if you have an unusual one */
public $primaryKey = 'my_tb_own_1_x_idx_pk';
有关如何更改默认模型和控制器行为的更多信息,请参阅CakePHP手册:
您不仅限于使用与控制器直接关联的模型(这只是默认行为);你可以使用任何型号
要实现所需功能,请为此表创建一个新模型,例如,MyOwnTable
,然后在控制器中,可以将此属性添加到类中:
public $uses = array('Index', 'MyOwnTable');
现在,您可以使用CakePHP内置的ActiveRecord功能访问MyOwnTable
:
$results = $this->MyOwnTable->find('count');
如果要访问其他表,只需为这些表创建模型并将其添加到$uses
属性中即可。(如果愿意,也可以在操作中使用$this->loadModel('Model')
)
如果您有一个不太可读的表名(例如my\u tb\u own\u 1\u x
或类似的名称),您可以将模型类称为人类可读的名称(例如MyTable
),并将$useTable
属性添加到模型中:
public $useTable = 'my_tb_own_1_x';
/* and change the default primary key if you have an unusual one */
public $primaryKey = 'my_tb_own_1_x_idx_pk';
有关如何更改默认模型和控制器行为的更多信息,请参阅CakePHP手册: