[Video] Bài tập quản lý sách bằng Laravel - Full Source Code quản lý sách - Lập trình Laravel
Mở bài
Bài tập quản lý sách bằng Laravel là một đề tài thực hành tuyệt vời cho những ai muốn làm chủ framework PHP phổ biến này. Thay vì học lý thuyết suông, làm một dự án nhỏ như quản lý thư viện giúp bạn tiếp xúc trực tiếp với các khái niệm quan trọng: route, controller, model, migration, seeder, Blade templates, Eloquent ORM, validation, file upload, pagination và nhiều kỹ thuật khác. Dự án này vừa đủ đơn giản để hoàn thành trong thời gian ngắn, vừa đủ thực tiễn để đem vào portfolio khi xin việc.
Trong bài viết này mình sẽ hướng dẫn Bài tập quản lý sách bằng Laravel từ đầu đến cuối — trình bày kiến trúc, tạo cơ sở dữ liệu, viết migration, seed dữ liệu, xây model, controller, route, view và một số tính năng mở rộng như tìm kiếm, phân trang, upload ảnh bìa. Mình cũng sẽ chia sẻ best practices, mẹo debug và cách đóng gói full source code để bạn có thể dễ dàng nhân rộng và triển khai. Nếu bạn đang trong khóa học Laravel hoặc tự học, bài tập này là lựa chọn hoàn hảo để thực hành.
Tổng quan dự án: yêu cầu chức năng và kiến trúc
Trước khi bắt tay code, cần xác định yêu cầu rõ ràng cho Bài tập quản lý sách bằng Laravel:
-
Quản lý sách (CRUD): Thêm, Sửa, Xóa, Danh sách.
-
Mỗi sách có: tiêu đề, tác giả, mô tả ngắn, thể loại, năm xuất bản, số trang và ảnh bìa.
-
Tìm kiếm sách theo tiêu đề/tác giả/thể loại.
-
Phân trang danh sách sách.
-
Upload ảnh bìa và lưu trữ an toàn.
-
Validation form, hiển thị thông báo lỗi.
-
(Tùy chọn) API trả JSON cho danh sách sách.
Kiến trúc đề xuất:
-
Routes:
routes/web.php -
Controller:
app/Http/Controllers/BookController.php -
Model:
app/Models/Book.php -
Migration/Seeder cho bảng
books -
Views:
resources/views/books/*.blade.php -
Storage:
storage/app/public/covers+php artisan storage:link
Với cấu trúc này, bạn có thể mở rộng chức năng (thêm authentication, role, export/import CSV) mà không phá vỡ nền tảng.
Bắt đầu: khởi tạo dự án và cấu hình môi trường
Để thực hiện Bài tập quản lý sách bằng Laravel, trước hết cần tạo project:
-
Cài Laravel (via Composer):
-
Cấu hình .env kết nối MySQL:
-
Tạo symbolic link cho storage (dùng để public ảnh bìa):
-
Chạy server:
Sau khi thiết lập, ta sang bước tạo migration và model. Việc chuẩn bị môi trường kỹ càng giúp dự án Bài tập quản lý sách bằng Laravel chạy mượt trên máy local.
Migration và Seeder: tạo cấu trúc bảng và dữ liệu mẫu
Migration tạo bảng books:
Trong file migration:
Chạy migrate:
Tạo seeder để fake dữ liệu:
Trong BookSeeder dùng Faker hoặc Factory:
Tạo factory:
Trong factory:
Seed DB:
Việc chuẩn bị dữ liệu mẫu giúp bạn thử nghiệm nhanh các tính năng hiển thị, tìm kiếm và phân trang trong Bài tập quản lý sách bằng Laravel.
Model & Eloquent: định nghĩa Book và scope tìm kiếm
Tạo model:
Trong app/Models/Book.php:
Dùng scope giúp controller ngắn gọn, và tăng tính tái sử dụng khi xử lý truy vấn phức tạp.
Routes: định tuyến CRUD và search
Trong routes/web.php thêm:
Bạn cũng có thể dùng Route::resource('books', BookController::class) để tạo nhanh toàn bộ route CRUD. Việc phân bổ route rõ ràng giúp SEO và RESTful API chuẩn hơn.
Controller: logic xử lý CRUD, upload cover và paginate
Tạo controller:
Các method chính:
index()
-
Nhận query
search -
Lấy danh sách sách:
Book::search($q)->orderBy('created_at','desc')->paginate(10)->withQueryString(); -
Trả view
books.index
create() & store()
-
Hiển thị form
books.create -
Validate dữ liệu:
-
Lưu cover nếu có:
edit() & update()
-
Tương tự store, replace cover cũ nếu upload mới (xóa file cũ via Storage::delete).
destroy()
-
Xoá bản ghi và ảnh bìa tương ứng.
Chú ý: luôn dùng transactions nếu thao tác nhiều bảng cùng lúc.
Views: Blade templates cho danh sách và form
Tổ chức view:
Layout chung layouts/app.blade.php chứa header/menu, link CSS/JS, và @yield('content').
books/index.blade.php:
-
Form search (GET)
-
Table hiển thị danh sách: title, author, genre, year, cover (thumbnail)
-
Buttons edit/delete
-
Pagination:
{{ $books->links() }}
books/create.blade.php:
-
form method POST,
enctype="multipart/form-data",@csrf -
fields: title, author, genre, year, pages, cover
-
show validation errors with
@error
Việc thiết kế UI thân thiện giúp trải nghiệm quản lý sách trong Bài tập quản lý sách bằng Laravel chuyên nghiệp hơn.
Tìm kiếm, phân trang và tối ưu truy vấn
-
Dùng
paginate(10)thay vìget()để tránh lấy quá nhiều bản ghi. -
Sử dụng
withQueryString()để giữ tham số tìm kiếm khi chuyển trang. -
Index cột database (
title,author) giúp tăng tốc LIKE queries. -
Cache kết quả tìm kiếm phổ biến bằng Redis nếu cần.
Ví dụ trong controller:
Những bước này đảm bảo ứng dụng vẫn mượt khi dataset lớn, qua đó bài tập quản lý sách bằng Laravel có thể mở rộng lên production.
Validation, bảo mật và xử lý file
-
Luôn validate request dùng
FormRequestnếu logic lớn:
-
Dùng
Storage::disk('public')->putFile()để lưu file an toàn. -
Hạn chế kích thước file, kiểm tra mime-type.
-
Escape output (
{{ }}) trong Blade để tránh XSS. -
Dùng CSRF token (
@csrf) cho form.
Bảo mật là yếu tố không thể bỏ qua khi chia sẻ source code quản lý sách cho người dùng thực tế.
Testing và debug
-
Viết Feature Tests cho CRUD:
-
Test nhập liệu hợp lệ, redirect, database has.
-
Dùng
php artisan migrate:fresh --seedđể reset DB khi test. -
Debug với
dd()hoặcLog::debug(). Xem logs ởstorage/logs/laravel.log.
Testing giúp bạn yên tâm refactor mà không phá vỡ chức năng.
Triển khai & full source code
Khi hoàn chỉnh, bạn có thể đóng gói full source code:
-
Push lên GitHub (kèm
.env.example, README hướng dẫn cài đặt). -
Tạo script seed dữ liệu demo.
-
Hướng dẫn setup:
composer install,cp .env.example .env,php artisan key:generate,php artisan migrate --seed,php artisan storage:link.
Triển khai lên server dùng Forge, DigitalOcean hoặc shared hosting hỗ trợ PHP. Đảm bảo cấu hình APP_ENV=production, bật cache php artisan config:cache, route:cache, view:cache.
Mẹo tối ưu và lời khuyên cho người học
-
Code nhỏ, modular: tách service layer cho logic phức tạp.
-
Sử dụng Resource Controllers & Route Model Binding để code ngắn và an toàn.
-
Dùng policies nếu muốn kiểm soát quyền chỉnh sửa/xoá sách.
-
UI/UX: thêm modal confirm khi xóa, hiển thị progress khi upload ảnh lớn.
-
Documentation: viết README rõ ràng cho full source code.
-
Performance: luôn dùng paginate và index DB.
Những thói quen này giúp bạn nâng chất lượng bài tập quản lý sách bằng Laravel từ demo thành ứng dụng chuyên nghiệp.
Kết luận
Bài tập quản lý sách bằng Laravel là một project hoàn hảo để học và luyện tập toàn diện các kỹ năng phát triển web: từ thiết kế database, migration, seeding, tới Eloquent, routes, controllers, Blade views, validation, file upload, tìm kiếm và phân trang. Việc hoàn thiện một bản full source code quản lý sách không chỉ giúp bạn hiểu sâu Laravel mà còn tạo ra sản phẩm thực tế để trình bày trong hồ sơ xin việc.
Hãy bắt tay vào thực hiện: tạo project, viết migration, seed dữ liệu, xây model, controller và view theo hướng dẫn ở trên. Khi hoàn thành, bạn có thể mở rộng tính năng như authentication, role-based access, export/import CSV, hoặc API cho frontend SPA. Nếu bạn cần bản sample full source code để tham khảo, hãy lưu ý cấu trúc, đặt tên rõ ràng và viết README chi tiết — điều đó sẽ nâng giá trị dự án của bạn lên rất nhiều. Chúc bạn học tốt và sớm hoàn thành bài tập quản lý sách bằng Laravel thành một ứng dụng thực tế, hữu ích và chuyên nghiệp!