cakephp Обновление поля - PullRequest
7 голосов
/ 05 марта 2011

Как заставить торт обновить поле и не вставлять новую запись.

Должен произойти сбой, если идентификатор не существует в БД

Я обнаружил, что форсировать вставку я могу 'updated' => false, поэтому, если я сделаю 'updated' => true, она будет работать

Ответы [ 3 ]

17 голосов
/ 05 марта 2011

Если вы хотите просто обновить поле, используйте метод saveField модели

$this->Order->id    = $id;
$this->Order->saveField('status', 'VOID');

Ссылка: http://book.cakephp.org/2.0/en/models/saving-your-data.html

4 голосов
/ 05 марта 2011
//Create: id isn't set or is null
$this->Recipe->create();
$this->Recipe->save($this->data);

//Update: id is set to a numerical value 


$this->Recipe->id = 2;
$this->Recipe->save($this->data);

см. http://book.cakephp.org/2.0/en/models/saving-your-data.html

0 голосов
/ 06 марта 2014

Использовать Model :: существующие

Чтобы убедиться, что запись существует, используйте Model :: Exists .Например:

function updateFoo($id, $value) {
    if (!$this->exists($id) {
        return false;
    }

    $this->id = $id;
    return $this->saveField('foo', $value);
}

Это будет выглядеть так:

$false = $model->updateFoo(false, $value);
$false = $model->updateFoo(0, $value);
$false = $model->updateFoo('doesnotexist', $value);
$true = $model->updateFoo('doesexist', $value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...