我会解释一下情况。
我有一些'模块',其中一个字段是主页面中的'位置'。如果我创建/编辑具有特定位置的模块,我想检查具有更高或相等位置的其余模块,并将它们向前移动一个位置。
在我的解决方案中,我使用模型的query()
函数。
如何?
在我的模块模型中,我有一个函数......
function moveModules( $includedPosition ){
if( !is_numeric( $includedPosition ) ){
return false;
}
$sql =
"UPDATE modules "
. " SET modules.position = modules.position + 1 "
. " WHERE modules.position >= $includedPosition "
;
$result = $this->query( $sql );
}
我可以在beforeSave()
或控制器中的任何地方使用此功能,但是......
我想在不使用自定义查询的情况下询问是否存在可能的解决方案。
由于
解决方案(感谢Headshota)
function moveModules( $includedPosition ){
if( !is_numeric( $includedPosition ) ){
return false;
}
$this->updateAll(array('Module.position'=>'Module.position + 1'), array('Module.position >='=>$includedPosition ));
}
答案 0 :(得分:1)
尝试使用updateAll
$this->Model->updateAll(array('Model.item'=>'Model.item+1'), array('Model.id'=>1));