我的一些数据库表中有几个字段,我的 CakePHP 模型永远不需要检索这些字段。有没有办法在模型级别设置一组默认的字段来获取?例如,我从第三方设计的数据库中检索一些数据,每个表有 50 个字段,我使用 5 个。
我知道我可以在 find() 查询和模型之间的任何关联时设置字段限制,但我想知道是否有模型级别的方法。
我的一些数据库表中有几个字段,我的 CakePHP 模型永远不需要检索这些字段。有没有办法在模型级别设置一组默认的字段来获取?例如,我从第三方设计的数据库中检索一些数据,每个表有 50 个字段,我使用 5 个。
我知道我可以在 find() 查询和模型之间的任何关联时设置字段限制,但我想知道是否有模型级别的方法。
CakePHP 不提供开箱即用的模型级别描述的内容。也就是说,没有一个 Model 属性defaultFields
被用于每个find()
fields
正如您所指出的,您可以通过设置属性在关联级别指定它。但是,这仅在您通过其中一种关系检索模型时才有效。
最后,您将在find()
. 您可以通过向模型添加属性来最小化重复自己,如下所示:
var $defaultFields = array('Model.field1', 'Model.field2', ...);
然后在你的find()
:
$this->Model->find('fields' => $this->Model->defaultFields, ...);
这有明显的局限性,但至少提供了一些封装性和灵活性。
注意:更具侵入性的方法可以使用beforeFind();
. 在这种情况下,您不需要调整每个find()
. 但是您的里程可能会根据您的使用情况而有所不同。