Triển khai CRUD với Laravel Service-Repository Pattern

Tại sao lại sử dụng Laravel Service và Repository Pattern? Có rất nhiều cách mà laravel có thể xây dựng chức năng CRUD. Nhưng cá nhân tôi đề xuất mô hình service-repository design pattern bởi vì nó clear và bền. Khái niệm về repositories and services đảm bảo rằng bạn viết mã có thể sử

Tại sao lại sử dụng Laravel Service và Repository Pattern?

Có rất nhiều cách mà laravel có thể xây dựng chức năng CRUD. Nhưng cá nhân tôi đề xuất mô hình service-repository design pattern bởi vì nó clear và bền. Khái niệm về repositories and services đảm bảo rằng bạn viết mã có thể sử dụng lại và giúp giữ cho controller của bạn càng đơn giản càng tốt, làm cho chúng dễ đọc hơn.

Repositories thường là một trình bao bọc chung cho mô hình của bạn và là nơi bạn sẽ viết các truy vấn khác nhau trong cơ sở dữ liệu của mình. Mặt khác, một Service là một lớp để xử lý tất cả logic của ứng dụng của bạn. Dựa trên kinh nghiệm, sẽ thực sự hữu ích khi tách biệt logic và trình bao bọc của mô hình, đặc biệt là khi bạn đang làm việc trong nhóm hoặc các dự án lớn.

Để minh họa Service và Repository, chúng tôi sẽ xây dựng một ứng dụng CRUD.

Để bắt đầu, hãy thiết lập Model, Controller và Migration bằng cách thực hiện:

php artisan make:model Post -mcr

  • -m: –migration tạo mới file migration
  • -c: –controller tạo mới file controller
  • -r: –resource để chỉ định controller có tài nguyên hay không

Route

Model

Migration

Sau đó, update post migration như bên dưới rồi thực hiện:

php artisan migrate

Repository

Laravel không có lệnh tạo repository. Bạn phải làm điều đó bằng tay. Chỉ cần tạo một thư mục Repositories, sau đó thêm file PostRepository và thêm code bên dưới.

Gọi model Post trong hàm tạo (construct)

Service

Giống như Repository, laravel không có lệnh tạo Service. Tạo thư mục Services, thêm file PostService và thêm code bên dưới.

Gọi PostRepositoryt trong hàm tạo (construct) của class PostService.

Bây giờ chúng ta đã hoàn tất việc thiết lập Service và Repository. Hãy tiếp tục tạo CRUD.

Create

PostController -> PostService -> PostRepository

$this->postService->savePostData($data) phần này gọi hàm savePostData trong post service.

Trong post service, xác nhận dữ liệu. Nếu không có lỗi, $this->postRepository->save($data); – Gọi function save trong post repository để lưu dữ liệu trong database.

Nếu có lỗi, chẳng hạn như khi không nhập tiêu đề, thì điều này sẽ được hiển thị khi thực thi trong postman.

Read

  1. GetAllData
  1. GetById

Update

Delete

Kết luận

Hy vọng chỉ cần nhìn vào ảnh chụp màn hình, bạn đã có thể thấy mô hình và sau đó bạn có thể dễ dàng hiểu tại sao laravel service-repository pattern lại clear và bền vững.

Nguồn

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ