Увеличьте поле в нескольких записях с помощью функций cakePHP - PullRequest
0 голосов
/ 06 мая 2011

Я объясню ситуацию.

У меня есть несколько «модулей», и одно из полей - это «позиция» на главной странице. Если я создаю / редактирую модуль с определенной позицией, я хочу проверить остальные модули, которые имеют более высокую или равную позицию, и переместить их на одну позицию вперед.

В моем решении я использую функцию 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 Ответ

1 голос
/ 06 мая 2011

Попробуйте использовать updateAll

$this->Model->updateAll(array('Model.item'=>'Model.item+1'), array('Model.id'=>1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...