2011-05-06 42 views
0

我将解释这种情况。用cakePHP函数增加多个记录中的字段

我有一些'模块',其中一个字段是主页面中的'位置'。如果我创建/编辑具有特定位置的模块,我想检查其他具有更高或相同位置的模块,并将它们向前移动一个位置。

在我的解决方案中,我使用模型的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()或控制器的地方我想使用这个功能,但...

我想问如果存在不使用自定义查询的可能解决方案。

感谢

SOLUTION(感谢Headshota)

function moveModules($includedPosition){ 

    if(!is_numeric($includedPosition)){ 
     return false; 
    } 

    $this->updateAll(array('Module.position'=>'Module.position + 1'), array('Module.position >='=>$includedPosition)); 


} 

回答

1

尝试使用updateAll

$this->Model->updateAll(array('Model.item'=>'Model.item+1'), array('Model.id'=>1)); 
+0

它的工作原理!谢谢 – raultm 2011-05-06 11:25:05

相关问题