Ответ 1
вы можете использовать updateAll() для этого
немного googling показывает это довольно быстро: http://nuts-and-bolts-of-cakephp.com/2008/05/22/incrementing-a-field-in-cakephp/
У меня есть это поле, значение которого я должен увеличить значение поля на определенное значение. Я использую этот
$data['quantity'] = 'Order.quantity+1';
который не работает для меня, количество здесь целое coloumn. Также будет ли он работать, когда в базе данных ничего нет?
Отношения Химаншу Шарма
вы можете использовать updateAll() для этого
немного googling показывает это довольно быстро: http://nuts-and-bolts-of-cakephp.com/2008/05/22/incrementing-a-field-in-cakephp/
Я использовал updateAll в своем коде для увеличения просмотров в статье. Поэтому каждый раз, когда вы посещаете статью, я вызываю следующую функцию из моего действия в моем контроллере статей:
function incrementViewCount($id) {
$this->updateAll(
array('Article.viewed' => 'Article.viewed+1'),
array('Article.id' => $id)
);
}
Затем в вашем контроллере...
$this->MyModel->incrementViewCount(123);
В основном похож на учебник, предложенный в предыдущем ответе.
Вы также можете попробовать этот код. Прекрасно работает для простых операций c++/- без необходимости дополнительного запроса.
Использование saveField:
<?php
$this->Article->id = $id;
$this->Article->saveField('viewed', (int)$this->Article->field('viewed') + 1);
?>