在 CakePHP 3 中使用查询向整数列加一
Add One to Integer Column Using Query in CakePHP 3
我不记得具体是怎么做的,但我确实记得能够在不知道该整数列的值的情况下通过查询将 1 添加到 mysql 中的整数列...
类似
update table set column=column+1 where id=1
我想知道,如何使用 CakePHP 3 执行上述查询
可以使用\Cake\ORM\Table::updateAll()
(或者底层的\Cake\Database\Query::update()
),用表达式生成算术运算部分,比如:
$additionExpression = $Table->query()->newExpr('column + 1');
$affectedRows = $Table->updateAll(
['column' => $additionExpression],
['id' => 1]
);
如果您想使用自动标识符引用,则稍微复杂一些:
$additionExpression = $Table
->query()
->newExpr()
->add([
new \Cake\Database\Expression\IdentifierExpression('column'),
'1'
])
->setConjunction('+'); // tieWith() before CakePHP 3.4
另见
我不记得具体是怎么做的,但我确实记得能够在不知道该整数列的值的情况下通过查询将 1 添加到 mysql 中的整数列...
类似
update table set column=column+1 where id=1
我想知道,如何使用 CakePHP 3 执行上述查询
可以使用\Cake\ORM\Table::updateAll()
(或者底层的\Cake\Database\Query::update()
),用表达式生成算术运算部分,比如:
$additionExpression = $Table->query()->newExpr('column + 1');
$affectedRows = $Table->updateAll(
['column' => $additionExpression],
['id' => 1]
);
如果您想使用自动标识符引用,则稍微复杂一些:
$additionExpression = $Table
->query()
->newExpr()
->add([
new \Cake\Database\Expression\IdentifierExpression('column'),
'1'
])
->setConjunction('+'); // tieWith() before CakePHP 3.4
另见