diff --git a/README.md b/README.md index 8f1d98d..edc9544 100644 --- a/README.md +++ b/README.md @@ -96,3 +96,11 @@ In `app/Http/Controllers/UserController.php` file method `destroy()`, delete all Test method `test_mass_delete_users()`. --- + +## Task 9. Soft Deletes. + +In `app/Http/Controllers/ProjectController.php` file method `destroy()`, change Eloquent statement to still return the soft-deleted records in the list of `$projects` + +Test method `test_soft_delete_projects()`. + +--- diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 29b1415..15058b9 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -28,4 +28,14 @@ class ProjectController extends Controller return redirect('/')->with('success', 'Projects updated'); } + + public function destroy($projectId) + { + Project::destroy($projectId); + + // TASK: change this Eloquent statement to include the soft-deletes records + $projects = Project::all(); + + return view('projects.index', compact('projects')); + } } diff --git a/app/Models/Project.php b/app/Models/Project.php index 1034631..dc43be0 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -4,8 +4,9 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Project extends Model { - use HasFactory; + use HasFactory, SoftDeletes; } diff --git a/database/migrations/2021_11_16_074340_create_projects_table.php b/database/migrations/2021_11_16_074340_create_projects_table.php index 0e6842f..3c50234 100644 --- a/database/migrations/2021_11_16_074340_create_projects_table.php +++ b/database/migrations/2021_11_16_074340_create_projects_table.php @@ -17,6 +17,7 @@ class CreateProjectsTable extends Migration $table->id(); $table->string('name'); $table->timestamps(); + $table->softDeletes(); }); } diff --git a/resources/views/projects/index.blade.php b/resources/views/projects/index.blade.php new file mode 100644 index 0000000..6742964 --- /dev/null +++ b/resources/views/projects/index.blade.php @@ -0,0 +1,14 @@ + + + + + + + + @foreach ($projects as $project) + + + + @endforeach + +
Name
{{ $loop->iteration }}. {{ $project->name }}
diff --git a/routes/web.php b/routes/web.php index 6905c60..7359f9b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -30,3 +30,4 @@ Route::delete('users', [UserController::class, 'destroy']); Route::post('projects', [ProjectController::class, 'store']); Route::post('projects/mass_update', [ProjectController::class, 'mass_update']); +Route::delete('projects/{projectId}', [ProjectController::class, 'destroy']); diff --git a/tests/Feature/EloquentTest.php b/tests/Feature/EloquentTest.php index 92f9c83..2200bd6 100644 --- a/tests/Feature/EloquentTest.php +++ b/tests/Feature/EloquentTest.php @@ -119,4 +119,13 @@ class EloquentTest extends TestCase $this->assertDatabaseCount('users', 1); } + public function test_soft_delete_projects() + { + $project = new Project(); + $project->name = 'Some name'; + $project->save(); + + $response = $this->delete('projects/' . $project->id); + $response->assertSee('Some name'); + } }