rav*_*dev 1 php mysql cakephp cakephp-model cakephp-3.0
我搜索了这个问题,发现了很多类似的答案
这就是公认的答案
$ this-> Widget-> updateAll(
Run Code Online (Sandbox Code Playgroud)array('Widget.numberfield' => 'Widget.numberfield + 1'), array('Widget.id' => 1));
现在,iam在cakephp3中使用此查询。这是我的样子
$ Questions = $ this-> loadModel('Questions');
$问题-> updateAll(
Run Code Online (Sandbox Code Playgroud)array('questions.trend' => 'questions.trend + 1'), array('questions.description' => $undashed_title));
一切正常,查询正在执行,但是当我检查调试器的sql日志时,这就是我发现的内容
更新问题,请设置questions.trend ='questions.trend + 1',而where Problems.description ='哪种类型
但是我在数据库中的值没有像应有的那样更新(我说这是因为我也已经在phpmyadmin控制台上复制了此查询,并且无法正常工作)
我相信查询应该看起来像这样
更新问题SETquestions.trend = questions.trend + 1 WHEREquestions.description ='What Type'
任何帮助,将不胜感激,谢谢:)
好了,正如我在评论说,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)
);
Run Code Online (Sandbox Code Playgroud)
并且不要忘记使用加载QueryExpression名称空间use Cake\Database\Expression\QueryExpression;。
是的,这是在CakePHP 3上执行的错误方法,您将使用CakePHP的ORM,然后将增量操作移至模型层。