Laravel 8과 7에서 소프트 삭제를 사용하여 휴지통을 만드는 방법
우리는 나의 이전 문장repo의 코드를 사용할 것이다
하면, 만약, 만약...
my를 누르면 나를 따라 더 많은 업데이트를 얻을 수 있습니다.
1단계: 어플리케이션 설치
2단계: 프로젝트 테이블에 delete at 열 추가하기
Laravel Soft Delete에서 데이터는 실제로 데이터베이스에서 삭제되지 않고 데이터에 deleted at 속성을 추가합니다. 따라서 데이터베이스에서 데이터를 조회할 때 Eloquent는 값이 null deleted at인 데이터를 찾아서 보내지만 데이터 값이 null deleted at가 아닌 경우 삭제된 데이터로 간주합니다.
그래서 우리는 그것을 추가하고 다시 이동을 실행해야 한다.
3단계: 마이그레이션 파일에 delete at 열 추가
실행 단계 2의 명령은 데이터베이스/migrations/에서 이전 파일을 만들고 이 파일을 편집하고 $table->softDeletes () 를 추가합니다.함수와 $table->dropSoftDeletes ();down () 함수에 대한 우리의 이전 파일은 다음과 같다
4단계: 마이그레이션 다시 실행
새 열을 기존 테이블에 추가하기 위해 이전을 다시 실행해야 합니다
php artisan migrate
데이터베이스로 이동하면 Null 값으로 만든 새 열이 표시됩니다.
단계 5: 모델에서softdelete 기능 사용하기
응용 프로그램/모델/프로젝트로 이동합니다.php와 소프트 삭제 기능을 추가합니다. 이 기능은 삭제된 모델에 영구적으로 삭제하는 것이 아니라 날짜만 추가하는 것을 알려줍니다.
use SoftDeletes;
또한 상단에 피쳐 경로 추가하기
use Illuminate\Database\Eloquent\SoftDeletes;
6단계: 삭제된 모든 항목을 가져올 라우트를 작성합니다.
routes/웹으로 이동합니다.php 및 삭제된 모든 항목 가져오기
Route::get('projects/deletedprojects', [ProjectController::class, 'getDeleteProjects'])->name('getDeleteProjects');
단계 7: 컨트롤러 생성 방법
위의 경로에서 프로젝트 컨트롤러 클래스에 getDeleted Projects 방법을 지정했기 때문에 이 방법을 만들었습니다.app/Http/Controllers/ProjectController로 이동합니다.php 및 이 메서드 추가
public function getDeleteProjects() {
$projects = Project::onlyTrashed()->paginate(10);
return view('projects.deletedprojects', compact('projects'))
->with('i', (request()->input('page', 1) - 1) * 10);
}
위의 방법에서 웅변적인 함수 onlyTrashed () 를 사용했습니다. 이 함수는null deleted at 값이 아닌 모델만 가져와서 삭제된 항목만 가져옵니다.8단계: 삭제된 모든 항목을 볼 블레이드 파일 생성
위의 getDeletedProjects () 방법에서 deletedprojects 보기를 되돌려줍니다. 따라서 이 보기를 만들고 Resources/views/projects/파일deletedprojects로 이동해야 합니다.칼날.php 인덱스 페이지 복사 및 편집
@extends('layouts.app')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Laravel 8 CRUD </h2>
</div>
</div>
</div>
<div class="pull-left ">
<a class="btn btn-success" href="{{ route('projects.index') }}" title="Back to Index"> <i class="fas fa-home"></i> </a>
</div>
<div class="">
<div class="mx-auto pull-right">
<div class="">
<form action="{{ route('projects.index') }}" method="GET" role="search">
<div class="input-group">
<span class="input-group-btn mr-5 mt-1">
<button class="btn btn-info" type="submit" title="Search projects">
<span class="fas fa-search"></span>
</button>
</span>
<input type="text" class="form-control mr-2" name="term" placeholder="Search projects" id="term">
<a href="{{ route('projects.index') }}" class=" mt-1">
<span class="input-group-btn">
<button class="btn btn-danger" type="button" title="Refresh page">
<span class="fas fa-sync-alt"></span>
</button>
</span>
</a>
</div>
</form>
</div>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered table-responsive-lg">
<tr>
<th>No</th>
<th>Name</th>
<th>Introduction</th>
<th>Location</th>
<th>Cost</th>
<th>Date Deleted</th>
<th>Action</th>
</tr>
@foreach ($projects as $project)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $project->name }}</td>
<td>{{ $project->introduction }}</td>
<td>{{ $project->location }}</td>
<td>{{ $project->cost }}</td>
<td>{{ date_format($project->deleted_at, 'jS M Y') }}</td>
<td>
<a href="{{ route('restoreDeletedProjects', $project->id) }}" title="restore project">
<i class="fas fa-window-restore text-success fa-lg"></i>
</a>
<a href="{{ route('deletePermanently', $project->id) }}" title="Permanently delete">
<i class="fas fa-trash text-danger fa-lg"></i>
</a>
</td>
</tr>
@endforeach
</table>
{!! $projects->links() !!}
@endsection
위 코드의 항목 "작업"열에 삭제된 파일을 복원하는 아이콘을 추가했습니다. 이것은 테이블에서 삭제된 위치의 값을 삭제하고, 또 다른 아이콘을 추가해서 항목을 영구적으로 삭제합니다. 데이터베이스에서 항목을 영구적으로 삭제합니다.다음에 삭제된 항목을 복구하기 위해 함수를 만들어야 합니다.
9단계: 삭제된 항목을 복원하기 위한 라우팅 작성
Route::get('projects/deletedprojects/{id}', [ProjectController::class, 'restoreDeletedProjects'])->name('restoreDeletedProjects');
Google 과정에서 컨트롤러 방법도 지정했습니다. Restored Deleted Projects. 그래서 프로젝트 컨트롤러로 이동해서 이 방법을 만듭니다.
10단계: 삭제된 항목 복구를 위한 컨트롤러 만들기
app/Http/Controllers/ProjectController로 이동합니다.php 및 이 메서드 추가
public function restoreDeletedProjects($id)
{
$project = Project::where('id', $id)->withTrashed()->first();
$project->restore();
return redirect()->route('projects.index')
->with('success', 'You successfully restored the project');
}
11단계: 항목을 영구적으로 삭제하기 위한 라우팅 작성
데이터베이스에 남기고 싶지 않은 항목을 영구적으로 삭제하는 기능을 만들어야 하기 때문에 루트를 만듭니다
Route::get('projects/retoreprojects/{id}', [ProjectController::class, 'deletePermanently'])->name('deletePermanently');
12단계: 컨트롤러 생성 방법
public function deletePermanently($id)
{
$project = Project::where('id', $id)->withTrashed()->first();
$project->forceDelete();
return redirect()->route('projects.index')
->with('success', 'You successfully deleted the project fromt the Recycle Bin');
}
이것들만, 우리 일을 시험해 봅시다.저희가 프로젝트를 만들었는데,
또한 삭제된 모든 항목이 표시된 페이지에 포함된 재활용 아이콘을 추가한 후 두 항목을 삭제하고 재활용 페이지로 이동합니다.
이것은 우리가 색인 페이지에서 삭제한 항목입니다. 여기는 두 개의 아이콘이 있습니다. 하나는 삭제된 항목을 복원하는 데 사용되고, 다른 하나는 데이터베이스에서 항목을 영구적으로 삭제하는 데 사용됩니다
우리는 항목을 복원한 후에 색인으로 되돌아갔고, 마지막으로 우리는 영구적으로 다른 항목을 삭제했다
Github repo 에서 온전한 코드를 얻을 수 있습니다.
저의 더 많은 글을 주목해 주십시오. 당신은 평론, 건의, 반응을 남길 수 있습니다.
모든 PHP 백엔드 엔지니어의 공백을 수용하고 싶습니다. Laravel 프레임워크의 장점은
Reference
이 문제에 관하여(Laravel 8과 7에서 소프트 삭제를 사용하여 휴지통을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kingsconsult/how-to-create-recycle-bin-with-soft-delete-in-laravel-8-and-7-1ldo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)