Bài 6. Sử dụng Migrations trong Laravel 5

Bài trước mình đã giới thiệu về Blade template engine (BTE) trong Laravel 5. Bài hôm nay mình sẽ hướng dẫn sử dụng migrations để tạo database trong Laravel 5.

Mục Lục:

1. Cấu hình database

Để cấu hình database trong Laravel, bạn tìm đến file .env ở thu mục gốc của ứng dụng.

Mở file lên với editor bất kỳ, tìm đến và chỉnh sửa 6 dòng như trong hình (trong trường hợp này mình dùng mysql). Tùy server, tên database, tài khoản của bạn để điền tương ứng

2. Sử dụng migrations trong laravel 5

Migration cơ sở dữ liệu trong Laravel cung cấp cho bạn một cách dễ dàng việc quản lý những schema CSDL trong ứng dụng. Khi bạn sử dụng migration, nhiều tác vụ liên quan tới CSDL schema dễ dàng hơn rất nhiều; bằng cách sử dụng migration bạn có thể thay đổi cấu trúc của bảng cơ sở dữ liệu, bạn có thể giữ lại những dữ liệu cũ bất cứ khi nào cho dù hiện tại bạn có thay đổi.

Tạo bảng bằng Migration

        $ php artisan make:migration created_table_name --create=name
    

Chèn thêm columns vào bảng đã có sẵn Migration

        $ php artisan make:migration add_columns_table_name --table=name
    

Kết quả tạo ra file trong thư mục database/migrations

Ví dụ:

Khi chạy lệnh khởi tạo như sau:

        $ php artisan make:migration create_table_categories --create=categories
    

Trong thư mục database/migrations sẽ tạo cho bạn file 2017_04_26_074546_create_table_categories.php

Nội dung file:

        // database/migrations
        use Illuminate\Support\Facades\Schema;
        use Illuminate\Database\Schema\Blueprint;
        use Illuminate\Database\Migrations\Migration;

        class CreateTableCategories extends Migration
        {
            /**
             * Run the migrations.
             *
             * @return void
             */
            public function up()
            {
                Schema::create('categories', function (Blueprint $table) {
                    $table->increments('id');
                    $table->timestamps();
                });
            }

            /**
             * Reverse the migrations.
             *
             * @return void
             */
            public function down()
            {
                Schema::dropIfExists('categories');
            }
        }
    

Dưới đây là một số câu lệnh của những hàm liên quan tới Schema mà Laravel cung cấp

Câu lệnh Diễn giãi
$table->increments(‘id’);
Tạo khóa ID tự động tăng trong bảng
$table->string(’email’); Trường dữ liệu khai báo với kiểu VARCHAR
$table->string(‘name’, 100); Trường dữ liệu khai báo với kiểu VARCHAR với số kí tự 100
$table->integer(‘votes’); Trường dữ liệu khai báo với kiểu INTEGER
$table->float(‘amount’); Trường dữ liệu khai báo với kiểu FLOAT
$table->boolean(‘confirmed’); Trường dữ liệu khai báo với kiểu BOOLEAN
$table->timestamps(); Tự động thêm trường created_at, updated_at
$table->text(‘description’); Trường dữ liệu khai báo với kiểu TEXT
->nullable() Trường dữ liệu có thể ghi dữ liệu null
->default($value) Đặt giá trị mặc định cho trường
->unsigned() Đặt trường dữ liệu là số nguyên dương

Xem chi tiết: tại đây

3. Tạo database website tin tức cơ bản bằng migrations

Tạo bản user

Mặc đinh Laravel đã tạo sẵn cho bạn file _create_users_table trong thư mục database/migrations. Bạn mở lên chỉnh sữa function up() như sau

        public function up()
        {
            Schema::create('users', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('email');
                $table->string('username')->unique();
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
        }
    

Ở đây mình login theo username nên column username sẽ là unique()(không trùng dữ liệu với nhau)

Tạo bảng categories

Chạy lệnh

        $ php artisan make:migration create_table_categories --create=categories 
    

Nội dung file _create_table_categories

        public function up()
        {
            Schema::create('categories', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->integer('parent_id');
                $table->string('alias');
                $table->string('description');
                $table->tinyInteger('status');
                $table->timestamps();
            });
        }
    

Tạo bảng articles

Chạy lệnh

        $ php artisan make:migration create_table_articles --create=articles 
    

Nội dung file _create_table_articles

        public function up()
        {
            Schema::create('articles', function (Blueprint $table) {
                $table->increments('id');
                $table->integer('category_id')->unsigned();
                $table->string('title');
                $table->string('alias');
                $table->string('tag');
                $table->string('image');
                $table->text('description');
                $table->longText('content');
                $table->tinyInteger('status');
                $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
                $table->timestamps();
            });
        }
    

Cuối cùng bạn chạy lệnh đê khởi tạo database

        $ php artisan migrate 
    

Nếu trong quá trình chạy lênh trên bị lỗi như sau

Bạn xóa hết xóa các bảng đã tạo rồi mở file app/Providers/AppServiceProvider.php ở function boot() bạn thêm vào đoạn

        Schema::defaultStringLength(191); // chèn thêm thư viện use Illuminate\Support\Facades\Schema;
    

Rồi chạy lại lệnh trên nhé.

Video hướng dẫn:

Trong bài này mình đã giới thiệu về Migrations trong Laravel 5 và hướng dẫn các bạn Tạo database website tin tức. Trong series bài viết tiếp theo mình sẽ hướng dẫn các bạn về Model trong Laravel 5. Mời các bạn đón đọc. Bài viết trên là những hiểu biết của cá nhân mình nên không tránh phải sai sót, rất mong sự đóng góp ý kiến của các bạn để bài viết trở nên hữu ích hơn.