Мягкое удаление в Filament
Давайте включим мягкое удаление. Модель поста уже помечает строки скрытыми вместо полного стирания из базы. По умолчанию список /admin/posts такие строки не показывает, как и обычные запросы Eloquent с глобальной областью видимости.
Чтобы в панели можно было увидеть
скрытые записи, на ресурсе
переопределяют метод
getEloquentQuery и снимают
SoftDeletingScope с запроса:
<?php
namespace App\Filament\Resources\Posts;
use App\Models\Post;
use Filament\Resources\Resource;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class PostResource extends Resource
{
protected static ?string $model = Post::class;
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}
}
?>
В описании таблицы добавим
фильтр TrashedFilter.
Он даёт переключатель: только
активные, только скрытые или
все строки сразу:
<?php
namespace App\Filament\Resources\Posts\Tables;
use Filament\Tables\Filters\TrashedFilter;
use Filament\Tables\Table;
class PostsTable
{
public static function configure(Table $table): Table
{
return $table
->filters([
TrashedFilter::make(),
]);
}
}
?>
После сохранения настроек откроем список и в фильтрах выберем режим со скрытыми строками. Удалённые из интерфейса записи снова видны в таблице.
Сделайте так, чтобы в списке работников можно было увидеть скрытые удалённые строки.