Добавьте значение, используя значение поля базы данных с помощью savefield в cakephp - PullRequest
4 голосов
/ 26 августа 2011

мой вопрос довольно прост, но трудно найти ответ для поисковых систем.

Я просто хочу обновить поле в базе данных, используя старое значение этих полей, чтобы добавить другое значение. Я сейчас использую следующее:

$this->Advertisement->saveField('total_views', '(total_views + 1)', false);

Но это дает мне следующий запрос:

UPDATE `advertisement` SET `total_views` = '(total_views +1)', `modified` = '2011-08-26 10:44:58' WHERE `advertisement`.`id` = 16

Это неправильно и должно быть:

UPDATE `advertisement` SET `total_views` = (total_views +1), `modified` = '2011-08-26 10:44:58' WHERE `advertisement`.`id` = 16

Проблема в том, что он помещает (total_views +1) между кавычками.

У кого-нибудь есть идеи, как заставить это работать?

Ответы [ 4 ]

5 голосов
/ 26 августа 2011
$this->Advertisement->updateAll(
array('Advertisement.total_views' => 'Advertisement.total_views + 1'),
array('Advertisement.id' => 1)
);
2 голосов
/ 01 октября 2012

На случай, если кто-то еще застрянет с этим, пробелы в запросе важны.

работает : Advertisement.total_views + 1

не работает : Advertisement.total_views+1

1 голос
/ 26 августа 2011
$this->Advertisement->updateAll(array('Advertisement.total_views'=>'Advertisement.total_views+1'), array('Advertisement.id'=>$id));
0 голосов
/ 09 мая 2018

Я обнаружил, что для аналогичной проблемы я смог решить ее следующим образом,

$this->Advertisement->updateAll(
array('Advertisement.total_views = Advertisement.total_views + 1'),
array('Advertisement.id' => 1)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...