Обновите строку на 1 в CakeStack Overflow

Я искал этот вопрос и нашел много похожих ответов, как этот

Обновите строку +1 в CakePHP

и вот как выглядит принятый ответ

$ This-> widget-> UpdateAll (

      array('Widget.numberfield' => 'Widget.numberfield + 1'),

array('Widget.id' => 1)

);

Теперь я использую этот запрос в cakephp3.
Вот как выглядит моя

$ Вопросы = $ this-> loadModel ( ‘Вопросы’);

$ Вопросы-> UpdateAll (

       array('questions.trend' => 'questions.trend + 1'),

array('questions.description' => $undashed_title)

);

Все работает нормально, и запросы выполняются, но когда я проверяю отладчик для журнала SQL, вот что я нашел

ОБНОВЛЕНИЕ вопросов SET SET questions.trend = ‘questions.trend + 1’ ГДЕ questions.description = ‘Какой тип’

Но мое значение в базе данных не обновляется, как должно быть
(Я говорю это, потому что я также скопировал этот запрос на консоль phpmyadmin и он не работает)

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

ОБНОВЛЕНИЕ вопросов SET SET questions.trend = questions.trend + 1 ГДЕ questions.description = ‘Какой тип’

Любая помощь будет оценена, спасибо 🙂

0

Решение

Ну, как я уже сказал в комментариях, CakePHP 3 расходятся value из expressionи то, что вы пытаетесь сделать, это увеличение expression, чтобы решить свою «проблему», вы должны копаться в документации CakePHP, и поэтому вы найдете это http://book.cakephp.org/3.0/en/orm/saving-data.html#bulk-updates, да, именно то, что вы хотите. Итак, это становится:

// load your beloved model
$questions = $this->loadModel('Questions');
// create a beauty expression
$expression = new QueryExpression('questions.trend + 1');
// execute a update with the beauty expression
$questions->updateAll(
array('questions.trend' => $expression),
array('questions.description' => $undashed_title)
);

И не забудьте загрузить QueryExpressionпространство имен с use Cake\Database\Expression\QueryExpression;,

Да, это неправильный способ сделать в CakePHP 3, вы должны использовать ORM CakePHP и переместить элемент приращения на уровень модели.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]