Может кто-нибудь помочь мне с этим кодом CakePHP?
я пытаюсь добавить поле в UpdateAll …
$this->MyModel->updateAll(
array(
'MyModel.Field1' => ***MyModel.Field1 & 'ok'***,
),
array('MyModel.Field2' => 'lorem')
);
Как упоминалось в документах, $fields
аргумент Model::updateAll()
принимает выражения SQL, так что просто передайте все, что нужно, в вашем случае, вероятно, CONCAT
операция:
$this->MyModel->updateAll(
array('MyModel.Field1' => "CONCAT(MyModel.Field1, 'ok')"),
array('MyModel.Field2' => 'lorem')
);
И не забывайте, что значения не экранируются! Если вы планируете вводить пользовательские данные, убедитесь, что вы правильно их подготовили, используя DboSource::value()
, К сожалению, нет возможности связать параметры при использовании updateAll()
, который всегда должен быть методом выбора для вставки данных, когда автоматическое экранирование не применяется.
Смотрите также http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-updateall-array-fields-mixed-conditions
Других решений пока нет …