Khi bạn đang mơ thì người khác đang nỗ lực.

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

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.

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 app\Http\Controllers\TodosController.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


CÁC BÀI VIẾT KHÁC

FirebirD

Đam mê Toán học, Lập trình. Sở thích chia sẻ kiến thức, Phim hài, Bóng đá, Cà phê sáng với bạn bè.

Todo List: Cập nhật dữ liệu ứng dụng trong Laravel

Todo List: Liên kết Route và Model tự động trong Laravel

1 Bình luận trong "Todo List: Xóa dữ liệu từ database"

  1. Trần Toàn

    3 weeks ago

    Phản hồi

    Thanks tác giả đã giới một khái niệm xóa dữ liệu rất hay bằng các cờ đánh dấu, đây chính là soft delete. Mong sẽ có một bài chuyên sâu hơn về khái niệm này trong Laravel và có những ví dụ thực tế áp dụng soft delete như đã giới thiệu trong bài viết.

Thêm bình luận