Увеличить поле в нескольких записях с помощью функций CakePHP

#php #cakephp

#php #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() или в контроллере, где захочу, но…

Я хочу спросить, существует ли возможное решение без использования пользовательского запроса.

Спасибо

РЕШЕНИЕ ( спасибо 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));