Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp与uncon结构数据库_Php_Mysql_Sql_Cakephp - Fatal编程技术网

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手册: