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