Я объясню ситуацию.
У меня есть несколько «модулей», и одно из полей - это «позиция» на главной странице. Если я создаю / редактирую модуль с определенной позицией, я хочу проверить остальные модули, которые имеют более высокую или равную позицию, и переместить их на одну позицию вперед.
В моем решении я использую функцию 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 ));
}