限制与模型关联的字段


CakePHP: Limit Fields associated with a model

我的一些数据库表中有几个字段是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()。但是您的里程可能会根据您的使用情况而有所不同。