Todo List: Xóa dữ liệu từ database

1879

Bài viết được sự cho phép của tác giả Kien Dang Chung

Video trong bài viết

Khi làm việc với database người ta thường nhắc đến CRUD là một cụm từ viết tắt của 4 chức năng cần và đủ để tương tác với các bản ghi là Create, Read, Update và Delete. Cho đến bài học hôm nay, bạn đã được tìm hiểu về 3 chức năng đầu và giờ là lúc chúng ta cùng tìm hiểu phần còn lại, chức năng xóa dữ liệu.

  "Làm PM, theo anh không cần biết về code, nhưng phải hiểu về SQL, database, những khái niệm cơ bản của code"
  Các thao tác cơ bản với Database trong Microsoft SQL Server

Xem thêm nhiều việc làm Database hấp dẫn trên TopDev

Tại sao phải xóa dữ liệu

Những dữ liệu không cần thiết chúng ta cần phải xóa khỏi database hoặc ít ra thì cũng không hiển thị trên ứng dụng, làm như vậy khi hiển thị các danh sách bản ghi với người dùng sẽ ngắn hơn và người dùng có thể bao quát hoặc tìm kiếm dễ dàng hơn. Có hai loại xóa dữ liệu:

  • Xóa dữ liệu ra khỏi database, dữ liệu sẽ không có khả năng xem lại khi cần thiết. Cách xóa này chỉ áp dụng với dữ liệu thông thường không quá quan trọng.
  • Xóa dữ liệu tạm thời bằng cách đánh dấu bằng các cờ xóa dữ liệu, cách này thường áp dụng cho các dữ liệu quan trọng, ví dụ dữ liệu tài chính, bạn có thể xóa một hợp đồng nhưng vẫn xem được chi tiết hợp đồng này nếu cần.

Trong ứng dụng Todo List, chúng ta sẽ sử dụng cách thứ nhất, xóa hẳn các bản ghi công việc cần làm khỏi database. Cách hai sẽ được giới thiệu đến các bạn trong một khóa học khác về Laravel.

Xóa dữ liệu trong ứng dụng Todo List

Quay trở lại với Quy trình 3 bước, hẳn bạn còn nhớ ở các bài trước chứ? Đường dẫn xóa một bản ghi Todo (giả sử id=3) sẽ có dạng /todos/3/delete. Chúng ta cùng thực hiện nhé.

Bước 1: Đăng ký đường dẫn

Trong các bài viết, các bước này cố tình được lặp đi lặp lại để các kiến thức này có thể được nhớ lâu hơn. Mở file routes/web.php và đăng ký đường dẫn xóa bản ghi:

Route::get('todos/{todo}/delete', 'TodosController@destroy');

Bước 2: Xử lý nghiệp vụ trong TodosController

Trong đăng ký ở bước 1, để xử lý cho đường dẫn xóa bản ghi là phương thức destroy() của TodosController. Thực hiện thêm phương thức này vào file appHttpControllersTodosController.php:

public function destroy($todoId)
{
    $todo = Todo::find($todoId);
    $todo->delete();
    return redirect('/todos');
}

Công việc đơn giản là tìm Todo từ ID có được từ đường dẫn, thực hiện xóa bản ghi này bằng phương thức delete().

Bước 3: Hành động hoàn thành

Sau khi đã xóa xong bảng ghi, chúng ta chuyển hướng người dùng về trang danh sách todos.

Như vậy, chức năng xóa dữ liệu đã hoàn thành, tuy nhiên chúng ta chưa có một nút hoặc một đường link nào đó để bấm vào mỗi khi cần xóa, chẳng lẽ gõ thẳng đường dẫn để xóa một Todo nào đó? Chúng ta sẽ thêm một nút Delete vào trang chi tiết của Todo (view show). Mở resources/views/todos/show.blade.php và thêm vào nút Delete:

@extends('layouts.app')

@section('title')
    Single Todo: {{ $todo->name }}
@endsection

@section('content')
    <h1 class="text-center my-5">
        {{ $todo->name }}
    </h1>

    <div class="row justify-content-center">
        <div class="col-md-6">
            <div class="card card-default">
                <div class="card-header">
                    Details
                </div>

                <div class="card-body">
                    {{ $todo->description }}
                </div>
            </div>
            <a href="/todos/{{ $todo->id }}/edit" class="btn btn-info my-2">Edit</a>
            <a href="/todos/{{ $todo->id }}/delete" class="btn btn-danger my-2">Delete</a>
        </div>
    </div>
@endsection

Chức năng xóa dữ liệu

Source code: Bài 14 – Xóa dữ liệu từ database

Bài viết gốc được đăng tải tại allaravel.com

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev