Kết nối và thao tác với cơ sở dữ liệu trong Laravel
Kết nối với Database
Trong một ứng dụng PHP, kết nối với cơ sở dữ liệu (CSDL hoặc database) là một việc hết sức phổ biến và hầu hết tất cả các website hiện nay đều sử dụng cơ sở dữ liệu để phục vụ cho quá trình phát triển chức năng cho website. Vì vậy Laravel đã cung cấp cho chúng ta một chức năng khá thú vị đó là Migration.Migration là gì?
- Migration là một công cụ rất hay của Laravel, cho phép tạo các bảng, các cột cơ sở dữ liệu (Database) bằng các dòng lệnh PHP, ngoài ra có thể dễ dàng cập nhật nội dung các bảng, các cột đã tồn tại.
- Migration giúp cho việc đồng bộ Database giữa các môi trường khá thuận lợi, thay vì muốn thêm một bảng hay một cột trong các môi trường, thì ta phải làm thủ công từng môi trường, thì với Migration bạn chỉ cần thực hiện bằng dòng lệnh đơn giản.
- Điểm tốt của Migration là làm việc được với nhiều cơ sở dữ liệu như: MySQL, SQL Server, PostgresSQL, ...
Tạo cơ sở dữ liệu
Ở đây chúng ta sẽ sử dụng hệ quản trị cơ sở dữ liệu MySQL thông qua công cụ XAMPP
Khởi động ứng dụng XAMPP và start 2 dịch vụ Apache và MySQL.
Lúc này phpAdmin có dạng ban đầu với một số database có sẵn.
Ở đây chúng ta sẽ tạo một database mới bằng cách click vào nút new ở khung bên trái hoặc mở cửa sổ console lên và chạy lệnh CREATE DATABASE. Mặc định database của bạn sẽ có tên người dùng là root và không có mật khẩu.
Cấu hình kết nối đến database
Đến đây chúng ta đã có database, tiếp theo chúng ta mở thư mục Laravel Project ra và chỉnh sửa file .env trong thư mục gốc, file .env sẽ có dạng như sau:
Trong đó chúng ta tìm đến đoạn DB_CONNECTION=mysql và sửa thông tin sao cho trùng khớp với database đã tạo trước đó như:
DB_DATABASE= //Tên database
DB_USERNAME= //username
DB_PASSWORD= //password
Tiếp theo trong thư mục config chúng ta tìm đến file database.php và tiến hành chỉnh sửa thông tin trong đoạn mysql như sau:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'cms'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'database' => env('DB_DATABASE', 'cms'), //Tên database
'username' => env('DB_USERNAME', 'root'),//username
'password' => env('DB_PASSWORD', ''), //password
Sử dụng migration
Để sử dụng migration thì chúng ta mở Commandline lên và trỏ đến thư mục Laravel project. Trước tiên hay thử lệnh php artisan để tìm hiểu xem php artisan có thể làm những gì nhé.
Và file migration tạo ra sẽ được lưu ở thư mục \database\migrations\.
- Tạo bảng bằng migration
Ở cửa sổ commandline chúng ta gõ lệnh:php artisan make:migration MigrateName --create="TableName"Trong đó MigrationName là tên file migration hệ thống sẽ tạo ra, TableName là tên bảng của bạn.
Ví dụ : tôi sẽ tạo một bảng tên posts sử dụng migration.
Nội dung file được tạo ra như sau:
- up() : chúng ta có thể chỉnh sửa cấu trúc của bảng ở đây. Để thực thi ta cần sử dụng lệnh : php artisan migrate
- down() : dùng phục hồi hay xóa bảng,... - để thực thi ta cần sử dụng lệnh : php artisan migrate:rollback
Chúng ta sẽ sửa cấu trúc bảng ở hàm up như sau để thêm các cột id (tự động tăng), title (giá trị mặc định là not subject), body (thuộc tính nullable):
Làm mới trang phpMyAdmin để xem kết quả.
- Xóa bảng bằng migration
Để xóa bảng bằng migration chúng ta chạy câu lệnh: php artisan migrate:rollback.
- Thay đổi cấu trúc bảng bằng migration
Chúng ta hoàn toàn có thể thay đổi cấu trúc bảng bằng cách sử dụng lệnh migration.
Ví dụ : để thêm một cột is_admin vào bảng posts chúng ta thực hiện lệnh sau:
php artisan make:migration add_is_admin_column_to_post_tables --table="posts".
Hệ thống sẽ tạo cho bạn một file migration và chúng ta phải sửa nó như sau:
Sau đó đừng quên thực thi lệnh php artisan migrate để cập nhật dữ liệu vào database nhé.
Chúc các bạn thành công 😉.














Nhận xét
Đăng nhận xét