Я хочу реализовать Soft Delete в моем проекте. Не удалось найти надежную рецензию на то же самое. Следующее — единственное, что я получил ..
http://www.logicsart.com/cakephp/soft-delete-in-cakephp/
Во всяком случае, я добавил соответствующие столбцы в моей базе данных и
Я попытался реализовать это, добавив следующий код в моей AppModel
public function exists($id = null) {
if ($this->Behaviors->attached('SoftDelete')) {
return $this->existsAndNotDeleted($id);
} else {
return parent::exists($id);
}
}
public function delete($id = null, $cascade = true) {
$result = parent::delete($id, $cascade);
if ($result === false && $this->Behaviors->enabled('SoftDelete')) {
return $this->field('deleted', array('deleted' => 1));
}
return $result;
}
Следуя, по моему bootstrap.php
CakePlugin::loadAll();
И следуя в моей модели,
public $actsAs = array('SoftDelete');
Я также включил SoftDeleteBehavior.php
в папке app / Model / Behavour.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я включаю $ actAs в мою модель, на странице не отображаются никакие данные, и, если я ее исключаю, мягкое удаление не работает.
Если у вас есть более конкретный источник для реализации Soft delete, это также поможет, любая помощь будет оценена. Спасибо!
Прежде всего, проверьте опечатку в папке вашего поведения. Вы написали
/app/Model/Behavour
когда это должно быть
/app/Model/Behavior
Далее версия SoftDelete
вы используете, вероятно, устарели и могут иметь ошибки, которые были исправлены в последних версиях.
Вы должны установить CakeDC/utils
с композитором:
"require": {
"cakedc/utils": "master"}
CakePlugin::loadAll()
требуется, когда вы решите установить как плагин, но не так, если вы загружаете отдельный класс в app/Model/Behavior
папка.
Также не забудьте создать два поля в таблице базы данных: deleted
TINYINT(1)
а также deleted_date
DATETIME
,
Не забудьте включить отладку на сервере разработки, установив
Configure::write('debug', 2);
в app/Config/core.php
,
Других решений пока нет …