У меня есть модель для некоторых продуктов в CakePHP, и по умолчанию мне нужно вернуть только продукты с количеством> 0 для каждой find(). Таким образом, я осуществил это в beforeFind:CakePHP beforeFind() перестает экономить
public function beforeFind($query) {
// As default, search only media with a quantity > 0
if (!isset($query['conditions']['Medium.quantity'])) {
$query['conditions']['Medium.quantity >'] = 0;
}
return $query;
}
Каждый раз, когда мне нужно, чтобы показать также продукты с количеством = 0, я установил «обратных вызовы» => ложны для находки(). Проблема: Когда я пытаюсь обновить продукт с количеством 0 до некоторого более высокого количества, он не работает. Как-то beforeFind() вызывается перед сохранением, когда я его прокомментирую, он отлично работает.
Код для редактирования продукта:
if ($this->request->is(['post','put'])) {
$this->Medium->id = $id;
if ($this->Medium->save($this->request->data, array('callbacks' => false))) {
$this->Session->setFlash(__('The medium has been updated.'));
return $this->redirect(['action' => 'view', $id]);
}
$this->Session->setFlash(__('Unable to update the medium.'));
}
Как вы можете видеть, я попытался установить обратные вызовы к ложным для сохранения слишком и он не работает.
У кого-нибудь есть идея, как отключить beforeFind при сохранении/обновлении?
Спасибо!
PS: Я использую CakePHP 2.5.6.