Увеличение поля базы данных Cakephp на значение - PullRequest
11 голосов
/ 31 декабря 2011

У меня есть это поле, значение которого я должен увеличить значение поля на конкретное значение.Я использую это

$data['quantity']     = 'Order.quantity+1';

, которое не работает для меня количество здесь является целочисленным столбцом.Также будет ли он работать, когда в базе данных ничего нет?

1005 * С уважением, Химаншу Шарма

Ответы [ 4 ]

16 голосов
/ 01 января 2012

Я использовал updateAll в своем коде для увеличения количества просмотров в статье.Поэтому каждый раз, когда статья посещается, я вызываю следующую функцию из моего действия просмотра в контроллере статей:

function incrementViewCount($id) {
    $this->updateAll(
        array('Article.viewed' => 'Article.viewed+1'),                    
        array('Article.id' => $id)
    );
}

Затем в вашем контроллере…

$this->MyModel->incrementViewCount(123);

По сути аналогичноучебник, предложенный в предыдущем ответе.

14 голосов
/ 31 декабря 2011

вы можете использовать updateAll () для этого

, немного поглядывая на это довольно быстро: http://cakephp.1045679.n5.nabble.com/Auto-Increment-A-Field-td3491697.html

2 голосов
/ 01 января 2014

Вы также можете попробовать этот код. Прекрасно работает для простых операций ++ / - без необходимости дополнительных запросов.

https://gist.github.com/denchev/8209318

1 голос
/ 26 марта 2013

Использование saveField:

<?php

$this->Article->id = $id;
$this->Article->saveField('viewed', (int)$this->Article->field('viewed') + 1);

?>
...