#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));