Download the PHP package nex-otaku/yii2-softdelete without Composer

On this page you can find all versions of the php package nex-otaku/yii2-softdelete. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package yii2-softdelete

Soft Delete

Реализация SoftDelete для моделей ActiveRecord в Yii2.

Зачем это нужно

Суть работы SoftDelete (мягкого удаления) - вместо окончательного удаления записей из БД, в них просто меняется флаг (например, deleted=1). При выборке из БД мы опять же по этому флагу "отсеиваем" все удалённые записи, и получаем только актуальные.

Зачем это нужно, не проще ли сразу удалять навсегда?

В более-менее сложных приложениях, есть статистика, отчёты и связанные данные. Например, покупатели делают заказы на сайте. Допустим, мы удалили покупателя, а вместе с ним и все его заказы. В результате мы не можем достоверно сказать, сколько у нас было заказов и на какую сумму за определённый период. В таких случаях помогает SoftDelete. По умолчанию мы игнорируем записи, отмеченные как удалённые, но при необходимости можем их учитывать и брать из них любую информацию.

Также, сохранение удалённых записей теоретически может пригодиться при отладке кода и восстановлении случайно удалённых данных. Но на практике это почти никогда не случается. Тем более, что для восстановления гораздо удобнее использовать регулярные бекапы. Поэтому, решив использовать SoftDelete, взвесьте все за и против. Возможно, в вашем проекте он не принесёт пользы, а будет только мешать.

Установка

Лучше всего устанавливать через Composer.

Выполните

или же добавьте

в список "require" вашего файла composer.json.

Схема БД.

В таблицах, добавляем поле "deleted": . Для всех внешних ключей таблицы устанавливаем режим . Это частично защитит нас от случайного "жёсткого" удаления записей.

Подключение расширений.

Расширения подгружаются автоматически, через зависимости композера.

Используются расширения:

  1. SoftDeleteBehavior. https://github.com/yii2tech/ar-softdelete

  2. QueryScopeBehavior для отображения всех записей, кроме удалённых. https://github.com/mdmsoft/yii2-ar-behaviors

  3. NotDeletedTrait, SoftDeleteBehavior (сконфигурированный под поле "deleted"), SoftDeleteTimestampBehavior, SoftDeleteBlameableBehavior. https://github.com/nex-otaku/yii2-softdelete

Бихевиор QueryScopeBehavior подключается к ActiveQuery автоматически. Его нигде не нужно специально прописывать. Установили расширение и он уже сам в бутстрапе прилепился к ActiveQuery.

Подключение в модели.

В модели подключаем трейт NotDeletedTrait и бихевиор SoftDeleteBehavior. Если нам нужно знать, кто и когда удалил запись, подключаем SoftDeleteTimestampBehavior и SoftDeleteBlameableBehavior. Не забываем добавить соответствующие поля в таблице БД - "deleted_by", "deleted_at".

Так как эти поля управляются автоматически и недоступны для редактирования пользователем напрямую, удаляем их из правил модели. См. метод "rules()".

Пример.

Использование

Каскадное удаление реализуется самостоятельно.


All versions of yii2-softdelete with dependencies

PHP Build Version
Package Version
Requires yiisoft/yii2 Version ~2.0.0
yii2tech/ar-softdelete Version ^1.0
mdmsoft/yii2-ar-behaviors Version ^1.3
nex-otaku/yii2-toolkit Version ~1.0.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package nex-otaku/yii2-softdelete contains the following files

Loading the files please wait ....