Làm thế nào bạn sẽ thực hiện xóa mềm trong laravel với ví dụ?

Laravel cung cấp một tính năng tích hợp cho phép chúng ta gắn cờ các hàng cơ sở dữ liệu là đã xóa mà không thực sự xóa chúng khỏi cơ sở dữ liệu. Bài viết này thảo luận về cách chúng ta có thể bắt đầu sử dụng chúng

Tại sao tôi nên sử dụng Xóa mềm?

Như chúng ta đã thảo luận trong phần “Dừng xóa dữ liệu”, khi chúng tôi xóa một hàng khỏi cơ sở dữ liệu, nó sẽ biến mất vĩnh viễn mà không cần trải qua quá trình khôi phục cơ sở dữ liệu đầy đủ có thể gây đau đớn. Xóa mềm dữ liệu cho phép bạn dễ dàng khôi phục dữ liệu với công việc tối thiểu và có thể tiết kiệm thời gian rất nhiều khi người dùng vô tình xóa một số dữ liệu

Laravel cung cấp hỗ trợ xóa mềm bằng cách sử dụng đặc điểm Illuminate\Database\Eloquent\SoftDeletes

di cư

Phần đầu tiên của quy trình mà chúng ta cần giải quyết là thiết lập các bảng cơ sở dữ liệu để có cột SoftDeletes

Thêm các cột xóa mềm vào một bảng mới

Hãy bắt đầu bằng cách tạo một mô hình mới để theo dõi `Dự án` trong ứng dụng quản lý dự án của chúng ta. Chúng tôi sẽ tạo mô hình và di chuyển trong một bước để chúng tôi có thể lười biếng nhất có thể

Bây giờ khi chúng tôi mở di chuyển mới được tạo, chúng tôi sẽ thêm các dòng sau vào hàm up[] của chúng tôi

Nó trông như thế này

Lệnh gọi hàm $table->softDeletes[]; là thứ thiết lập bảng để cho phép đặc điểm SoftDeletes hoạt động. Không có nó, chúng tôi sẽ gặp lỗi truy vấn

Bây giờ chúng tôi sẽ chạy di chuyển

Hãy xem bảng trông như thế nào bên trong MySQL

Như chúng ta có thể thấy có một cột deleted_at trong định nghĩa bảng. Đây là những gì cuộc gọi $table->softDeletes[]; được thêm vào bảng và những gì mà đặc điểm SoftDeletes sẽ sử dụng để theo dõi nếu hàng đã bị xóa

Thêm các cột xóa mềm vào một bảng hiện có

Hãy xem cách chúng ta có thể thêm các cột xóa mềm vào một bảng hiện có. Chúng tôi sẽ tạo một di chuyển mới bằng cách sử dụng `make. lệnh migration` để thêm các cột vào bảng users vì ngoài hộp Laravel không có cột này trên bảng users

Tiếp theo, chúng ta sẽ thay đổi quá trình di chuyển để nó vừa thêm các cột trong hàm up[] [$table->softDeletes[];] vừa xóa chúng trong hàm Illuminate\Database\Eloquent\SoftDeletes3 [Illuminate\Database\Eloquent\SoftDeletes4]

Một lần nữa, chúng tôi sẽ chạy di chuyển

hùng biện

Thiết lập mô hình để sử dụng xóa mềm

Bây giờ chúng ta đã thiết lập các bảng cơ sở dữ liệu, chúng ta có thể bắt đầu làm việc với các mô hình đã xóa mềm trong mã của mình. Bước đầu tiên là thêm đặc điểm Illuminate\Database\Eloquent\SoftDeletes vào các mô hình. Dưới đây là một mô hình ví dụ mà chúng tôi đã thiết lập nó để sử dụng logic SoftDeletes

Điều quan trọng cần lưu ý là mặc dù chúng tôi đã thêm cột SoftDeletes vào mô hình của mình nhưng Laravel không tự động sử dụng nó cho đến khi chúng tôi thêm đặc điểm, vì vậy chúng tôi vẫn sẽ xóa dữ liệu mà không có nó.

Xóa một mô hình

Bây giờ mọi thứ đã được thiết lập, hãy kiểm tra xem điều gì sẽ xảy ra

Trước tiên, chúng tôi sẽ sử dụng tinker để tạo một `Dự án` mới

Khi chúng tôi kiểm tra cơ sở dữ liệu, chúng tôi có thể thấy rằng nó đã được lưu vào cơ sở dữ liệu và cột deleted_at được đặt thành Illuminate\Database\Eloquent\SoftDeletes9 cho biết rằng nó chưa bị xóa

Bây giờ chúng ta sẽ xóa mô hình

Và quay lại MySQL, chúng ta có thể thấy deleted_at không còn là Illuminate\Database\Eloquent\SoftDeletes9, điều này cho biết nó đã bị xóa

Khôi phục một mô hình

Nếu bạn vô tình xóa mô hình, Laravel giúp bạn dễ dàng khôi phục bản ghi bằng cách sử dụng chức năng SoftDeletes2

Xóa một mô hình

Giả sử bạn gặp trường hợp ai đó vô tình nhập thông tin và chúng tôi cần xóa bản ghi khỏi cơ sở dữ liệu. SoftDeletes cung cấp chức năng SoftDeletes4 sẽ làm việc đó

Tìm một mô hình đã xóa

Điều gì xảy ra khi chúng ta xóa một mô hình và cần tìm nó sau?

Đầu tiên, hãy thiết lập một SoftDeletes5 mới và xóa nhẹ nó

Khi chúng tôi cố gắng sử dụng SoftDeletes6, chúng tôi sẽ nhận được một SoftDeletes7 vì đặc điểm của SoftDeletes đang lọc chúng ra

Để giải quyết vấn đề này, chúng ta cần gọi hàm SoftDeletes9 trước khi gọi hàm SoftDeletes6

Tìm một mô hình đã xóa trong một mối quan hệ

Một phần khác trong mã của chúng tôi mà chúng tôi cần chú ý là khi chúng tôi có một mô hình xác định mối quan hệ Eloquent với các mô hình SoftDeletes

Thông thường, chúng tôi sẽ xác định mối quan hệ của chúng tôi như vậy

Nếu up[]2 được liên kết với SoftDeletes5 này bị xóa mềm và chúng tôi cố gắng truy cập nó thông qua mối quan hệ này, hàm sẽ trả về Illuminate\Database\Eloquent\SoftDeletes9

Làm cách nào để triển khai XÓA mềm trong Laravel với ví dụ *?

Để xóa mềm một mô hình, bạn có thể sử dụng. $model = Nội dung. tìm[ $id ]; . Deleted [soft] models are identified by the timestamp and if deleted_at field is NULL then it's not deleted and using the restore method actually makes the deleted_at field NULL .

Làm cách nào để áp dụng DELETE mềm trong Laravel?

Để thực hiện thao tác xóa mềm trong Laravel, bạn cần có một cột delete_at được đặt thành giá trị mặc định null , vì cột này phải thuộc loại dữ liệu dấu thời gian trong mô hình. Assuming we are doing this for the Post model, we add use SoftDeletes; inside the model and import the following class at the top.

Làm cách nào để triển khai XÓA mềm trong Laravel 8?

Nhấp vào hồ sơ của tôi để theo dõi tôi để nhận thêm thông tin cập nhật. .
Bước 1. Thiết lập ứng dụng. .
Bước 2. Thêm cột đã xóa vào bảng dự án. .
Bước 3. Thêm cột delete_at vào tệp di chuyển. .
Bước 4. Chạy lại di chuyển. .
Bước 5. Kích hoạt đặc điểm xóa mềm trên mô hình. .
Bước 6. Tạo các tuyến đường để nhận tất cả các dự án đã xóa

Làm cách nào để XÓA một bản ghi trong Laravel?

ứng dụng/Http/tuyến. php . get['delete-records','StudDeleteController@index']; . get['delete/{id}','StudDeleteController@destroy']; Route::get['delete-records','StudDeleteController@index']; Route::get['delete/{id}','StudDeleteController@destroy']; Bước 6 −Đầu ra sẽ xuất hiện như trong hình dưới đây. Bước 7 - Nhấp vào liên kết xóa để xóa bản ghi đó khỏi cơ sở dữ liệu.

Chủ Đề