Kết nối database trong Laravel 8

Trong bài viết này chúng ta sẽ học cách kết nối database trong Laravel 8 các bạn nhé. Đây là phần tương đối đơn giản nên chúng ta chỉ tìm hiểu lướt qua. Chủ yếu là cách cấu hình còn sử dụng hệ quản trị cơ sở dữ liệu nào là tùy ở bạn.

Giới thiệu Database Laravel 8.

Hầu hết mọi ứng dụng web hiện đại đều tương tác với cơ sở dữ liệu. Laravel làm cho việc tương tác với cơ sở dữ liệu trở nên đơn giản hơn nhờ cách sử dụng SQL thô, trình tạo truy vấn thông thạo và Eloquent ORM . Hiện tại, Laravel 8 hỗ trợ 4 cơ sở dữ liệu:

  • MySQL 5.6+ 
  • PostgreSQL 9.4+ 
  • SQLite 3.8.8+
  • SQL Server 2017+

Cấu hình database Laravel 8

Cấu hình cho các dịch vụ cơ sở dữ liệu của Laravel 8 nằm trong tệp cấu hình config/database.php triong ứng dụng của bạn. Trong tệp này, chúng ta có thể xác định tất cả các kết nối cơ sở dữ liệu của mình, cũng như chỉ định kết nối nào nên được sử dụng theo mặc định. Hầu hết các tùy chọn cấu hình trong tệp này được điều khiển bởi các giá trị của các biến môi trường ứng dụng của bạn (.env). Các ví dụ cho hầu hết các hệ thống cơ sở dữ liệu được hỗ trợ của Laravel được cung cấp trong tệp .env này.

Ví dụ file config/database.php

'connections' => [
        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_general_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'),
            ]) : [],
        ],
        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],
    ],

Cấu hình database laravel 8 sử dụng MYSQL XAMPP

Trước tiên chúng ta cần tạo database trên phpMyadmin trước , ví dụ mình đã tạo db tên là jetstream với bảng mã utf8_general_ci. 

Mở file .env tìm đoạn code sau

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=jetstream
DB_USERNAME=root
DB_PASSWORD=

Điền đúng tên database vào DB_DATABASE, tài khoản và mật khẩu tương ứng vào từng dòng.  Vì mình dùng xampp nên tài khoản mặc định để root và mật khẩu mình để trống.

Chỉnh lại mã trong config/database.php

Mờ file database.php tìm đoạn code 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', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_general_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'),
            ]) : [],
        ],

Chỉnh 'charset'  và 'collation' đúng theo database mới tạo.

Lưu lại các file là xong.

Lời kết:

Cấu hình database trong Laravel 8 tương đối đơn giản, chúng ta chỉ cần để ý cấu hình đúng bảng mã để không gây xung đột trong quá trình chạy lệnh. Chúc các bạn thành công!


Bình luận