我有一个链接到CakePHP(2.5.3)应用程序的遗留数据库。数据库在其所有表中都有很多列,其中许多是完全未使用的(例如,在一个表中,我只需要80个空白列中的2列),因此我总是必须指定“字段”我运行一个查询。我在别处读到我可以通过在模型中使用这样的代码来取消设置字段:
function beforeFind($query) {
$this->schema();
unset($this->_schema['ColumnName']);
unset($this->_schema['ColumnName2']);
etc.
}
这似乎工作正常,问题是我正在使用80多行代码来取消设置列,而实际上我只需要设置两个。有没有办法强制CakePHP让我手动定义架构中的列?
我已尝试在模型开头声明$ _schema变量,这似乎没有帮助。
答案 0 :(得分:2)
Model::schema是告诉CakePHP存在哪些字段的方法,您只需要覆盖它以明确说明它应包含哪些字段,或者过滤掉您不想要的字段。
e.g:
function schema($field = false) {
if (!is_array($this->_schema) || $field === true) {
parent::schema();
$keepTheseKeys = array_flip(['Column1', 'Column2']);
$this->_schema = array_intersect_key($this->_schema, $keepTheseKeys);
}
return parent::schema($field);
}