gpt4 book ai didi

CakePHP:从数据库读取模型时可以忽略字段吗?

转载 作者:行者123 更新时间:2023-12-02 12:22:55 24 4
gpt4 key购买 nike

在我的一个模型中,我有一个“LONGTEXT”字段,其中包含大量我从不关心阅读的内容,并且它会减慢速度,因为我在数据库之间移动更多数据和网络应用程序。

有没有办法在模型中指定我希望 CakePHP 简单地忽略该字段,并且从不读取它或对其执行任何操作?

我真的想避免仅为该字段创建单独的表和单独的模型的麻烦。

谢谢!
丹尼尔

最佳答案

正如 @SpawnCxy 所说,您需要在 find 中使用 'fields' => array(...) 选项来限制您想要的数据检索。如果您不想每次编写 find 时都执行此操作,则可以在模型 beforeFind() 回调中添加类似的内容,该回调将自动填充 fields 选项,包含除长文本字段之外的所有字段:

function beforeFind($query) {
if (!isset($query['fields'])) {
foreach ($this->_schema as $field => $foo) {
if ($field == 'longtextfield') {
continue;
}
$query['fields'][] = $this->alias . '.' . $field;
}
}
return $query;
}
<小时/>

关于评论:

确实如此……在这种情况下,最简单的方法可能是从架构中取消设置该字段。

unset($this->Model->_schema['longtextfield']);

我还没有测试过它,但这应该会阻止该字段包含在查询中。如果您想让每个查询都可以切换,您可以将其移动到另一个变量,例如 $Model->_schemaInactiveFields 并在需要时将其移回。您甚至可以为此制定一个行为。

关于CakePHP:从数据库读取模型时可以忽略字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com