12/08/2018, 15:11

Xây dựng blog đơn giản bằng Laravel + Vue.js (part 2)

Tiếp tục quay trở lại với bài viết lần trước của mình "Xây dựng blog đơn giản sử dụng Laravel và Vue.js". Trong bài viết lần này, chúng ta sẽ bắt tay vào xây dựng database cho blog. Sau một thời gian dài bận rộn, từ hôm nay mình sẽ quay trở lại để hoàn thiện nốt phần còn lại của series này. Hy vọng ...

Tiếp tục quay trở lại với bài viết lần trước của mình "Xây dựng blog đơn giản sử dụng Laravel và Vue.js". Trong bài viết lần này, chúng ta sẽ bắt tay vào xây dựng database cho blog. Sau một thời gian dài bận rộn, từ hôm nay mình sẽ quay trở lại để hoàn thiện nốt phần còn lại của series này. Hy vọng sẽ series sẽ mang tới các bạn mới bắt đầu với Laravel và Vue những điều hữu ích.

Download

Để bắt đầu cho bài này, bạn hãy vào đây và nhấn nút "Clone or download" để download source code mà mình đã chuẩn bị cho bài này để thực hiện theo mình. Đây thực ra là source code của phần một được mình tạo lại các file migration mới để phục vụ cho phần hai này.

Phân tích

Cùng điểm lại một chút:

  • Chúng ta cần đăng nhập nên cần phải lưu thông tin tài khoản, thông tin người dùng (User) trong database.
  • Chúng ta viết blog nên sẽ cần lưu lại bài viết (Post).
  • Một bài viết thường sẽ thuộc trong một danh mục nên ta cần một bảng để lưu danh mục bài viết (Category). OK, như vậy ta có 3 thực thể cần quản lý cho Simple-blog gồm: User, Post và Category. Ta sẽ tạo 3 bảng tương ứng có tên: users, posts và categories bằng migration của Laravel với cú pháp sau:
php artisan make:migration this_is_your_migration_name
# Mình đã thực hiện:
php artisan make:migration create_users_table
php artisan make:migraiton create_post_table

Trong source mà bạn download về, mình đã tạo hai migrations để tạo bảng users. Các bạn hãy làm từng bước theo TODO mình đặt hướng dẫn.

Set up

Ta sử dụng migration để quản lý các sự thay đổi về cấu trúc các bảng của cơ sở dữ liệu. Dưới đây là đoạn code trong một file migration để thực hiện tạo bảng users.

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('email')->unique();
    $table->string('password');
    $table->rememberToken();

    // TODO: 2. Viết thêm code tạo trường first_name, last_name cho bảng users.
    // Hãy để 2 field này đều có thể null!

    $table->timestamps();
});

Rồi tạo bảng để lưu trữ danh sách các bài viết (Post), ta có:

  • id: Primary key, tự động tăng
  • title: string <=> varchar(255)
  • content: text, chứa nội dung bài viết
  • category_id: id của danh mục mà bài viết này thuộc về.
  • auth_id: ID number của tác giả viết bài này.
  • timestamps(): Sẽ tạo ra hai field timestamp là created_at và updated_at, được dùng để Laravel lưu ngày tạo bản ghi (created_at), và ngày cuối cùng bản ghi được sửa đổi (updated_at). Cụ thể bằng đoạn code dưới đây:
Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->text('content');
    $table->integer('category_id');
    $table->integer('auth_id');
    $table->timestamps();
});

Bây giờ, bạn hãy cùng tôi tạo thêm một migration khác để tạo bảng categories lưu danh sách các danh mục bài viết. Chúng ta cần lưu một hai thông tin chính gồm: id, name. Sau khi đã hoàn thiện, chúng ta sẽ cùng nhau tiếp tục sang phần tiếp theo nhé! Trong phần sau ta sẽ: Xây dựng chức năng login / Danh sách bài viết. Mong nhận được các góp ý từ các bạn, nếu có thắc mắc, hãy đặt câu hỏi và mình sẽ trả lời!

0