Rate this post

Trong chủ đề này, chúng ta sẽ tìm hiểu về mô hình Model cho phép tương tác với cơ sở dữ liệu. Mỗi bảng cơ sở dữ liệu có mô hình tương ứng cung cấp sự tương tác với cơ sở dữ liệu. Mô hình cho phép bạn truy vấn dữ liệu trong các bảng của mình.

Các bài viết liên quan:

Mô hình được tạo trong thư mục ứng dụng. Bạn cũng có thể đặt mô hình ở bất kỳ đâu, có thể được tải tự động theo tệp composer.json.

Chúng ta có thể sử dụng lệnh sau để tạo mô hình:

php artisan make:model Post

Chúng tôi cũng có thể tạo mô hình bằng cách sử dụng di chuyển cơ sở dữ liệu:

php artisan make:model Post -m

hoặc

php artisan make:model Post -migration

Các bước tạo model

  • Khi chúng ta nhập lệnh trên vào cửa sổ Git bash:

Cửa sổ trên cho thấy rằng mô hình có tên ‘Đăng’ đã được tạo thành công.

  • Mô hình (Bài đăng) được tạo trong thư mục ứng dụng.

Cấu trúc của model

Cấu trúc của lớp mô hình mà chúng tôi đã tạo ở trên được hiển thị bên dưới:

Đoạn mã trên cho thấy rằng lớp Post mở rộng Illuminate \ Database \ Eloquent \ Model.

Bảng names

Trong laravel eloquent, chúng ta không cần chỉ định tên bảng sẽ được sử dụng cho mô hình Post. Tên số nhiều của lớp sẽ được coi là tên bảng trừ khi chúng ta chỉ định tên bảng một cách rõ ràng. Ví dụ, trong đoạn mã trên, tên của lớp là Đăng hoạt động trên các bài đăng trên bảng. Bạn cũng có thể chỉ định bảng tùy chỉnh bằng cách sử dụng thuộc tính $ table của lớp mô hình được hiển thị trong đoạn mã dưới đây:

Trong đoạn mã trên, thuộc tính $ table chỉ định rằng lớp Post đang sử dụng bảng posts.

Khóa chính

Mô hình hùng hồn cho rằng mỗi bảng có một khóa chính có tên là ‘id’. Chúng tôi có thể ghi đè quy ước này bằng cách cung cấp một tên khác cho thuộc tính $ primarykey.

Theo mặc định, một cách hùng hồn, khóa chính là một giá trị số nguyên tự động tăng dần. Nếu chúng ta muốn cung cấp giá trị không tăng thêm cho khóa chính, thì chúng ta phải đặt thuộc tính $ tăng thêm ‘false’.

public $incrementing = false;

Nếu chúng ta muốn cung cấp giá trị không phải số nguyên cho khóa chính, thì chúng ta phải cung cấp một giá trị khác cho thuộc tính $ keyType.

protected $keyType = ‘string’;

Ở trên, chúng tôi đang gán kiểu chuỗi cho khóa chính.

Đọc dữ liệu

Bây giờ, chúng ta sẽ xem xét cách lấy dữ liệu từ cơ sở dữ liệu. Chúng ta hãy hiểu thông qua một ví dụ.

  • Đầu tiên, chúng ta cần thêm hai thuộc tính trong một lớp mô hình.

Post.php

  • Chúng tôi thêm tuyến đường được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu.

web.php

Trong đoạn mã trên, chúng tôi sử dụng phương thức all () để truy xuất tất cả các bản ghi từ cơ sở dữ liệu, sau đó chúng tôi áp dụng vòng lặp foreach để truy xuất tên nội dung của tất cả các hàng có sẵn trong cơ sở dữ liệu, được hiển thị bên dưới.

Trong ảnh chụp màn hình bên dưới, chúng ta có thể thấy rằng hai bản ghi có sẵn trong bảng bài đăng.

Đầu ra

Khi chúng tôi chạy url, localhost / firstproject / public / read, đầu ra sẽ là:

Nếu chúng ta muốn truy xuất bản ghi cụ thể từ cơ sở dữ liệu, thì chúng ta sử dụng phương thức find ().

Đầu ra

Chạy url, localhost / firstproject / public / find để xem đầu ra của đoạn mã trên.

Đọc dữ liệu với các ràng buộc

  • Để truy xuất một hàng duy nhất, chúng tôi sử dụng phương thức first () như hình dưới đây:

Đầu ra

  • Nếu chúng ta không cần truy xuất toàn bộ hàng, thì chúng ta có thể sử dụng phương thức value () để lấy trực tiếp giá trị của một cột.

Đầu ra

Chèn dữ liệu

Bây giờ, chúng ta sẽ xem cách chèn dữ liệu vào cơ sở dữ liệu. Hãy xem một ví dụ dưới đây:

Đầu ra

Chạy url, localhost / firstproject / public / insert trong trình duyệt web. Sau khi thực thi url, hãy mở phpmyadmin.

Kết quả trên cho thấy dữ liệu đã được chèn thành công.

Cập nhật dữ liệu bằng phương thức save ()

Chúng tôi cũng có thể cập nhật các bản ghi bằng cách sử dụng phương thức save (). Chúng ta hãy hiểu thông qua một ví dụ.

Đầu ra

Màn hình trên hiển thị bảng cơ sở dữ liệu trước khi thực thi đoạn mã trên.

Khi chúng tôi thực thi đoạn mã trên, dữ liệu sẽ được cập nhật hiển thị trong màn hình bên dưới.

Mass Assignment

Để cung cấp phép gán khối lượng, chúng ta cần sử dụng phương thức create () và cũng cung cấp thuộc tính $ fillable trong một lớp mô hình.

Chúng ta hãy hiểu thông qua một ví dụ.

  • Đầu tiên, hãy tạo tuyến đường và chúng tôi đã thêm phương thức create () vào trong hàm đóng. Phương thức create () về cơ bản là thêm một bản ghi mới và các giá trị được cung cấp thông qua tham số của nó. Đầu tiên, tạo tuyến đường và chúng ta đã thêm phương thức create () trong hàm đóng. Phương thức create () về cơ bản là thêm một bản ghi mới và các giá trị được cung cấp thông qua tham số của nó.
  • Để cung cấp phép gán khối lượng, chúng ta cần thêm thuộc tính $ fillable vào một lớp mô hình như được hiển thị trong đoạn mã dưới đây.

Đầu ra

Chạy url, localhost / firstproject / public / create để chạy đoạn mã trên.

Bây giờ, hãy nhìn vào cơ sở dữ liệu.

Khu vực được đánh dấu ở trên cho thấy rằng bản ghi mới đã được tạo thành công.

Cập nhật dữ liệu với Eloquent

Bây giờ, chúng ta sẽ xem cách cập nhật dữ liệu bằng cách sử dụng hùng hồn. Chúng ta hãy hiểu thông qua một ví dụ.

  • Đầu tiên, hãy tạo tuyến đường.

Trong đoạn mã trên, chúng tôi sử dụng phương thức update () của lớp mô hình. Chúng tôi đang cập nhật bản ghi có id bằng 1.

Đầu ra

Xóa dữ liệu

Bây giờ, chúng ta sẽ xem cách xóa dữ liệu bằng cách sử dụng Eloquent. Chúng tôi trực tiếp triển khai phương thức delete () có sẵn trong lớp mô hình hùng hồn.

Có nhiều cách khác nhau để xóa dữ liệu.

  • Cách đầu tiên là sử dụng phương thức find () và delete ().

Đầu ra

  • Cách thứ hai là sử dụng phương thức hủy ().

Đầu ra

Nếu chúng ta muốn hủy nhiều hơn một hàng,

Đoạn mã trên đang hủy các bản ghi có id, 3 và 4.

Đầu ra

  • Cách thứ ba là sử dụng truy vấn.

Đầu ra

Xóa mềm / Chuyển vào thùng rác

Cũng có một cách khác để xóa các bản ghi là xóa mềm. Khi các mô hình bị xóa mềm, điều đó có nghĩa là các bản ghi không thực sự bị xóa khỏi cơ sở dữ liệu. Trong xóa mềm, các bản ghi không bị xóa vĩnh viễn; chúng được lưu trữ trong không gian thùng rác.

Chúng ta hãy hiểu qua một ví dụ về cách xóa mềm được thực hiện.

  • Đầu tiên, chúng ta cần đặt thuộc tính Delete_at cho lớp mô hình.
  • Bây giờ, hãy di chuyển để thêm một cột đã xóa trong bảng bài đăng.
  • Vì chúng tôi đã tạo quá trình di chuyển với tên add_column_deleted_at, cấu trúc của nó được đưa ra bên dưới:

Laravel chứa phương thức trợ giúp được gọi là softDeletes (), mà chúng ta đã sử dụng trong đoạn mã trên. Phương thức softDeletes () được sử dụng để tạo cột.

  • Bây giờ, chạy lệnh php Artian migrate.
  • Cuối cùng, hãy thêm tuyến đường trong tệp web.php để chạy xóa mềm.

Trong đoạn mã trên, chúng tôi đang xóa mềm bản ghi có id ‘1’.

Đầu ra

Trong màn hình trên, cột delete_at hiển thị thời gian mà bản ghi này đã được xóa mềm. Nếu cột này chứa giá trị null, điều đó có nghĩa là bản ghi này không bị xóa mềm.

Truy xuất dữ liệu đã xóa / chuyển vào thùng rác

Để lấy lại dữ liệu đã xóa, chúng ta sử dụng phương thức withTrashed (). Hãy hiểu điều này thông qua một ví dụ.

Ở trên, chúng tôi đang truy xuất bản ghi đã được chuyển vào thùng rác hoặc bị xóa mềm.

Đầu ra

Khôi phục dữ liệu đã xóa / chuyển vào thùng rác

Trong chủ đề trước, chúng ta sẽ xem cách lấy dữ liệu từ mô hình xóa mềm. Bây giờ, chúng ta sẽ xem cách khôi phục dữ liệu từ không gian thùng rác về vị trí ban đầu. Hãy hiểu điều này thông qua một ví dụ.

Trong đoạn mã trên, chúng tôi đang khôi phục dữ liệu được chuyển vào thùng rác bằng cách sử dụng hàm restore ().

Đầu ra

Màn hình trên cho thấy giá trị của cột delete_at là NULL có nghĩa là bản ghi được khôi phục trong cơ sở dữ liệu.

Xóa record vĩnh viễn

Đôi khi chúng ta cần xóa dữ liệu vĩnh viễn. Để xóa vĩnh viễn mô hình đã xóa mềm, chúng tôi sử dụng phương thức forceDelete (). Hãy hiểu điều này thông qua một ví dụ.

Trong đoạn mã trên, chúng tôi đang xóa dữ liệu được chuyển vào thùng rác.

Trước khi thực thi mã trên, bản ghi được chuyển vào thùng rác có id bằng 1 được hiển thị trong ảnh chụp màn hình bên dưới.

Khi chúng tôi chạy đoạn mã trên, bản ghi được chuyển vào thùng rác sẽ bị xóa và bảng sẽ giống như được hiển thị bên dưới:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now