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
- GetAllData
- 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.