CakePHP поля модели по умолчанию - PullRequest
0 голосов
/ 14 августа 2011

Я новичок в CakePHP, и хотя мне очень нравится возможность выбора модели и всех связанных с ней моделей, я пытаюсь выяснить, существует ли более простой способ не просто выбирать все поля от каждой модели.

Например, вместо того, чтобы просто автоматически выбирать все поля, когда я получаю данные модели, и без необходимости кропотливо указывать поля => массив (...) каждый раз, есть ли способ, которым я могу указать, какие поля выбраны по умолчанию?

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Вы также можете создать свой собственный метод поиска в модели:

function findSelected($options = array()) {
 $options['fields'] = array('id','name');
 return $this->find('all', $options);
}

в контроллере:

$this->Model->findSelected(array('order' => 'id ASC'));

Еще лучше объединить массив опций в методе findSelected, тогда выможет даже предоставить дополнительные поля на лету.

0 голосов
/ 15 августа 2011

Вы хотите взглянуть на поведение Containable - http://book.cakephp.org/view/1323/Containable

Это очень хорошо задокументировано, но для краткого обзора

$this->Article->find('all', array(
  'contain' => array(
    'Author.name',
    'Category' => array(
      'name',
      'icon'
    )
  )
));

вернет все ваши данные Статьи, а также только три других поля.

Мне добавили Containable в мое определение app_model, потому что я использую его для всех, кроме самых простых находок.

0 голосов
/ 15 августа 2011

Да, вы можете проверить beforeFind этой модели, если установлен ключ 'fields', если нет, вы можете установить его там. Но я бы сказал, что, кроме того, что отладка выглядит более аккуратно, при этом практически нет прироста производительности. И еще одна вещь, которую нужно иметь в виду, если вам нужно внести изменения в модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...