CakePHP: лимитные поля, связанные с моделью - PullRequest
3 голосов
/ 30 августа 2011

У меня есть несколько полей в некоторых таблицах базы данных, которые мои модели CakePHP никогда не должны извлекать.Есть ли способ установить набор полей по умолчанию для выборки на уровне модели?Например, я получаю некоторые данные из сторонней разработанной базы данных, которая имеет 50 полей на таблицу, я использую 5.

Я знаю, что могу установить ограничения для полей во время запроса find () и во времякаких-либо ассоциаций между моделями, но мне было интересно, был ли подход на уровне модели.

1 Ответ

3 голосов
/ 30 августа 2011

CakePHP не предлагает то, что вы описываете на уровне модели, из коробки. То есть не существует свойства Model defaultFields, которое используется на каждом find()

Как вы заметили, вы можете указать это на уровне ассоциации, установив свойство fields. Однако это будет работать только при извлечении модели по одному из этих отношений.

В конце концов, вы будете устанавливать это в вашем find(). Вы можете минимизировать повторение, добавив свойство к вашей модели, например:

var $defaultFields = array('Model.field1', 'Model.field2', ...);

Тогда в вашем find():

$this->Model->find('fields' => $this->Model->defaultFields, ...);

Это имеет очевидные ограничения, но, по крайней мере, обеспечивает некоторую инкапсуляцию и, следовательно, гибкость.

Примечание: Более инвазивный подход может использовать beforeFind();. В этом случае вам не нужно настраивать каждый find(). Но ваш пробег может варьироваться в зависимости от вашего использования.

...