在我的一个模型中,我有一个"LONGTEXT"字段,其中包含大量的东西,我从不在乎这些东西,它减慢了速度,因为我在数据库和Web之间移动了更多的数据应用程序.
有没有办法在模型中指定我希望CakePHP简单地忽略该字段,从不读它或用它做任何事情?
我真的想避免创建一个单独的表和一个单独的模型的麻烦,仅适用于此字段.
谢谢!
丹尼尔
正如@SpawnCxy所说,您需要使用a中的'fields' => array(...)选项find来限制要检索的数据.如果您不想在每次编写时都这样做find,可以在模型beforeFind()回调中添加类似这样的内容,这将自动fields使用除longtext字段之外的所有字段填充选项:
function beforeFind($query) {
if (!isset($query['fields'])) {
foreach ($this->_schema as $field => $foo) {
if ($field == 'longtextfield') {
continue;
}
$query['fields'][] = $this->alias . '.' . $field;
}
}
return $query;
}
Run Code Online (Sandbox Code Playgroud)
关于评论:
这是真的......在这种情况下最简单的方法可能是从架构中取消字段.
unset($this->Model->_schema['longtextfield']);
Run Code Online (Sandbox Code Playgroud)
我没有测试它,但这应该阻止该字段包含在查询中.如果要为每个查询进行此可切换,可以将其移动到另一个变量,$Model->_schemaInactiveFields并在需要时将其移回.你甚至可以为此做一个行为.
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |