3
我的一些数据库表中有几个字段,我的CakePHP模型从不需要检索。有什么方法可以设置默认的一组字段以在模型级别获取?例如,我从第三方设计的数据库检索一些数据,每个表有50个字段,我使用5.CakePHP:限制与模型相关的字段
我知道我可以在find()查询时和任何时候设置字段限制模型之间的关联,但我想知道是否有模型级的方法。
我的一些数据库表中有几个字段,我的CakePHP模型从不需要检索。有什么方法可以设置默认的一组字段以在模型级别获取?例如,我从第三方设计的数据库检索一些数据,每个表有50个字段,我使用5.CakePHP:限制与模型相关的字段
我知道我可以在find()查询时和任何时候设置字段限制模型之间的关联,但我想知道是否有模型级的方法。
CakePHP不提供您在模型级别开箱即用的描述。也就是说存在是每个find()
正如你提到的,你可以在通过设置fields
属性关联级别指定此使用的defaultFields
没有Model属性。但是,这只有在您通过其中一种关系检索模型时才有用。
最后,您将在find()
中设置此项。你可以尽量减少通过增加一个属性到模型中,像这样重复自己:
var $defaultFields = array('Model.field1', 'Model.field2', ...);
然后在您的find()
:
$this->Model->find('fields' => $this->Model->defaultFields, ...);
这有明显的局限性,但至少提供了一些封装,因此灵活性。
注意:更有创意的方法可以使用beforeFind();
。在这种情况下,您不需要调整每个find()
。但是,您的里程可能会因您的使用情况而异。
这就是我算了一下,谢谢您的好意。我想我会使用$ default字段的想法 –
没问题。如果你有* simple *'find()',使用'beforeFind()'回调可能是一个更快的方法。根据我的经验,这些回调可能会在不直观的时间点燃。 –