CakePHP не предлагает то, что вы описываете на уровне модели, из коробки. То есть не существует свойства Model defaultFields
, которое используется на каждом find()
Как вы заметили, вы можете указать это на уровне ассоциации, установив свойство fields
. Однако это будет работать только при извлечении модели по одному из этих отношений.
В конце концов, вы будете устанавливать это в вашем find()
. Вы можете минимизировать повторение, добавив свойство к вашей модели, например:
var $defaultFields = array('Model.field1', 'Model.field2', ...);
Тогда в вашем find()
:
$this->Model->find('fields' => $this->Model->defaultFields, ...);
Это имеет очевидные ограничения, но, по крайней мере, обеспечивает некоторую инкапсуляцию и, следовательно, гибкость.
Примечание: Более инвазивный подход может использовать beforeFind();
. В этом случае вам не нужно настраивать каждый find()
. Но ваш пробег может варьироваться в зависимости от вашего использования.