2015-07-28 2 views
1

В MySQL я могу сделать следующие:сохранение относительных значений с CakePHP

UPDATE table SET field=field+1 WHERE id=123 

Как сделать то же самое, используя подход CakePHP?

Пробовал следующее:

$this->Model->id = 123; 
$this->Model->save(array(
    'field' => '`field`+1', 
)); 

В статье saving-your-data.html не кажется, чтобы покрыть это.

Также найдено: cakephp+update+relative, ничего не найдено.

UPDATE Сейчас я делаю прямое обновление, он работает, но я думал, что может быть лучше

$this->Model->query("UPDATE ".$this->Model->useTable." SET field=field+1 WHERE id=123"); 
+0

Remove СИМВОЛ '. И вы так пробовали? $ this-> Model-> save (array ('field' => 'field + 1')); – kuttyraj

+0

CakePHP обычно может разбирать все эти '' '', но я попробовал. Он сбрасывает поле 'INT' на' 0', что, по-видимому, означает, что он все еще пытается сохранить текстовое значение и не может этого сделать. –

ответ

1
$this->Model->updateAll( 
     array('Model.count' => 'Model.count + 1'), 
     array('Model.id' => 1) 

); 
+0

спасибо. это обновит нужную запись, если я установил '$ this-> Model-> id = 123;' перед выполнением 'updateAll'? извините, должен был указать это в вопросе –

+0

$ this-> Article-> saveField ('visible', (int) $ this-> Article-> field ('seen') + 1); –

Смежные вопросы