Обновить большую модель CakePHP, но * не * не трогать определенные поля? - PullRequest
2 голосов
/ 22 сентября 2010

Использование CakePHP 1.3

У меня довольно большая модель в CakePHP, и я хотел бы иметь некоторые скрытые элементы на странице формы для (вручную) сравнения / проверки передсохранение, но при выполнении saveAll() (с проверкой) я не хочу, чтобы эти поля присутствовали (по сути, чтобы избежать их обновления).

Как правильно обращаться с этим? Удалите их из $this->data, прежде чем передать это saveAll()?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Используйте параметр 'fieldlist' :

$this->Model->saveAll($data, array('fieldlist' => array('fields', 'to', 'save')));

$fields = array_keys($this->Model->_schema);
$fieldsNotToSave = array('field1', 'field2');
$fieldsToSave = array_diff($fields, $fieldsNotToSave);
3 голосов
/ 22 сентября 2010

Я обычно буду использовать unset() до saveAll().Если вы думаете об этом, это самый умный / самый простой способ.То есть, если вы не хотите вручную называть скрытые поля ввода, отличные от значения по умолчанию data[Model][field], которое генерируется помощником формы.

Но тогда вам придется обращаться к ним вручную и проверять их вручную.

unset() быстро и ясно.

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