Для возможности переупорядочения я добавил в базу данных новый столбец sort
, в котором будет храниться заказ.Итак, теперь у меня есть функция
function _sortPosts($newSort){
foreach ($newSort AS $id => $value) {
if(is_numeric($value['sort'])){$this->Post->updateAll(array('Post.sort' => $value['sort']),array('Post.id' => $id));
} else {
$this->Session->setFlash(__('Non-numeric value given.', true),'default', array('class' => 'error'));
$this->redirect($this->referer());
}
}
foreach(array_keys($this->data['Post']) as $parent){
$this->Post->reorder(array('id' => $parent, 'field' => 'Post.sort', 'order' => 'ASC', 'verify' => true));
}
}
Но она выполняется очень медленно, если есть более 20-30 детей.Здесь я вставил пример запросов, сгенерированных из-за изменения порядка одного из родителей и двух детей: http://pastebin.com/e076Czg5