我想构建(例如)以下sql查询,其中匹配数据行的位置字段应增加1:
UPDATE images SET position = position + 1 WHERE (position > 2 AND position <= 4)
我尝试使用CakePHP 3的查询构建器构建查询:
$query->update()
->set(['position' => 'position + 1'])
->where(['position >' => 2])
->andWhere(['position <=' => 4])
->execute();
由于position是一个整数,CakePHP转换表达式&#39; position + 1&#39;到0并且没有通过&#39;位置+ 1&#39;到SQL查询。
有没有办法使用CakePHP查询构建器构建此查询,还是我必须使用原始sql语句?
答案 0 :(得分:0)
正确的方法应该是
public class Deploy
{
...
public static Deploy init()
{
InputStream i = Deploy.class
.getClassLoader()
.getResourceAsStream(
"/com/example/props");
}
}
但我想你可以做到
$expression = new QueryExpression('position = position + 1');
$query->update()
->set([$expression])
->where(['position >' => 2])
->andWhere(['position <=' => 4])
->execute();
请参阅manual