до вставки и после удаления

я как-то снова потерялся в своем проекте для начинающих. Я добавляю записи для полетов, у которых есть время взлета и посадки. Поэтому каждый раз, когда я вставляю полет или удаляю его (редактировать - это другой вопрос), я хотел бы обновить общее время планера на конкретном самолете (другой модели). Теперь возникает несколько вопросов, например, должен ли я делать это с помощью функции afterSave/beforeDelete в моей модели или должен ли я делать это каким-либо другим способом, например. триггер mysql или даже в моем контроллере.

Моя основная проблема заключается в том, что я пытался собрать всю необходимую информацию в своих вызовах afterSave() и beforeDelete, и я понятия не имею, как получить доступ к этим данным. Особенно в вызове beforeDelete() кажется, что массив $this->data пуст, так что я не могу рассчитать количество времени, которое мне нужно вычесть из общего времени моего планера.

Итак, суть моего вопроса носит более общий характер, если это действительно правильный способ сделать это. Еще одна вещь, которая приходит мне на ум, это тот факт, что если что-то пойдет не так, я боюсь получить несоответствующее время планера, но уже удаленную запись полета.

Я думаю сделать это с помощью хранимой процедуры или как-то еще.

Большое спасибо за то, что прочитали это, и, возможно, намек на более простой способ сделать это.

С наилучшими пожеланиями,

cdjw


person Christian Waschke    schedule 18.01.2011    source источник


Ответы (1)


посмотрите, как counterCache работает в ядре, похоже, это то, что вам нужно сделать. Все это происходит в обратных вызовах модели.

просмотрите код и посмотрите, где это называется http://api.cakephp.org/class/model#method-ModelupdateCounterCache

person dogmatic69    schedule 20.01.2011
comment
ога! большое спасибо, что помогает. я все время смотрел не на те разделы и места. большая помощь! - person Christian Waschke; 21.01.2011