mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 00:45:44 +00:00
1.7 KiB
1.7 KiB
SoftDelete — мягкое удаление
App\Helpers\SoftDelete — генерирует фрагменты SQL-условий для двух принятых в
проекте конвенций мягкого удаления:
- булев флаг:
is_deleted/ легасиdeleted('1'/'0'); - nullable-метка:
deleted_at(NULL= активна).
use App\Helpers\SoftDelete;
Методы
active($alias = null, $column = 'deleted_at')
Условие «запись не удалена».
$sql = 'SELECT * FROM ' . $t . ' u WHERE ' . SoftDelete::active('u');
// ... u.deleted_at IS NULL
deleted($alias = null, $column = 'deleted_at')
Условие «запись удалена».
documentActive($alias = null) / documentDeleted($alias = null)
Условия по конвенции документов (document_deleted).
$where .= ' AND ' . SoftDelete::documentActive('d');
// ... d.document_deleted != '1'
condition($alias, $column, $deleted)
Произвольное условие: собрать под конкретную колонку.
Рецепт
use App\Content\ContentTables;
use App\Helpers\SoftDelete;
$t = ContentTables::table('documents');
$rows = DB::query(
'SELECT * FROM ' . $t . ' d WHERE d.rubric_id = %i AND ' . SoftDelete::documentActive('d'),
$rubricId
)->getAll();
Возвращает строку — подставляется прямо в
WHERE. Значения не параметризуются (это статические условия), пользовательский ввод в них не попадает.