CakePHP model-> save (): сохранить все, кроме некоторых исключенных полей - PullRequest
0 голосов
/ 05 октября 2010

Я хочу сохранить все, кроме некоторых исключенных полей. Я знаю, что могу сделать это так

$this->Blah->save($this->data,false,$fieldList)

Где $ fieldList содержит все поля данных таблицы, но я не хочу их сохранять. У меня есть несколько таблиц, в которых есть поля данных maaany, и я не хочу писать весь список с нуля при каждом отдельном действии контроллера (да, поля, которые не следует сохранять, отличаются от действия к действию). Кроме того, это выглядит грязно и запутанно. Предоставляет ли cakePHP что-то готовое для использования в этом случае? Если нет, я думаю, мне пришлось бы реализовать это самостоятельно, добавив свойство $ fieldList для каждого контроллера и выполнив что-то подобное -hacked-вместе-раствор):

$tmp = $fieldList;
unset(array_search('fieldtoexclude', $tmp));
$this->Blah->save($this->data,false,$tmp);

С наилучшими пожеланиями

Ответы [ 2 ]

1 голос
/ 05 октября 2010
function blacklist($blackList = array()) {
    return array_diff(array_keys($this->schema()), $blackList);
}

Шоуд работа

Взгляните на: http://www.dereuromark.de/2010/09/21/saving-model-data-and-security/ для деталей

0 голосов
/ 06 октября 2010

Если список полей меняется от действия к действию, то вы ищете автоматическую функцию, которая может читать ваши мысли. Торт не обеспечивает этого!

Где-то вы должны сказать, какие поля должны быть исключены, и если вы сделаете это длинным и понятным способом, ваш код станет более понятным.

Если это только один контроллер, определите список как переменную класса или, в качестве альтернативы, создайте подкласс действия сохранения в модели.

...