我有一个运行MySQL数据库的CakePHP 2.x应用程序。
另一个开发人员,另一个应用程序(在Asp.Net中)的另一个目的是在数据库中创建了一些MySQL视图。
这些视图似乎让我的CakePHP应用程序感到困惑,因为它将它们作为表格,并在键,关系等方面弄乱了一些东西。
我有没有办法或地方告诉我的CakePHP应用程序,它不需要担心这些视图,只是像以前一样继续使用表格?
答案 0 :(得分:0)
对于CakePHP应用程序正在使用的每个表模型,请定义table
属性
如果表格没有关联Model
,则必须创建
class Somemodel extends AppModel{
public $table = "somemodels";
}
答案 1 :(得分:0)
继续阅读CakePHP如何使用MySQL数据库并研究MySQL语法之后,我想出了下面的解决方案并且它有效。我在这里发布它可能需要它的其他人和/或更有经验的开发人员发布或不是这个是一个好主意。
我找到了CakePHP从数据库中获取表格的文件:
/lib/Cake/Model/Datasource/Database/Mysql.php
我找到了完成这项工作的代码行:
$result = $this->_execute('SHOW TABLES FROM ' . $this->name($this->config['database']));
请注意MySQL语句,特别是:
'SHOW TABLES FROM ' . $this->name($this->config['database'])
阅读SHOW TABLES
文档,我了解了它的作用及其语法:https://dev.mysql.com/doc/refman/5.7/en/show-tables.html
所以,我把声明改为:
'SHOW FULL TABLES FROM ' . $this->name($this->config['database']) . ' WHERE Table_Type != "VIEW"'
基本上:
我将SHOW TABLES
更改为SHOW FULL TABLES
,以便它包含第二列,其中包含常规表BASE TABLE
和VIEW
视图。
然后,我在我添加的WHERE
语句中使用了第二列信息:WHERE Table_Type != "VIEW"'
来过滤结果中的视图。
新的最后一行是:
$result = $this->_execute('SHOW FULL TABLES FROM ' . $this->name($this->config['database']) . ' WHERE Table_Type != "VIEW"' );
该应用程序似乎再次完美运行!