Create Database Tables Migration in Laravel

This snippet shows how to create database tables using Laravel's migration feature. It defines three tables: 'users', 'categories', and 'courses', along with their respective columns and data types. This is essential for structuring the database for a web application built with Laravel.
 avatar
iamvu
php
2 months ago
3.4 kB
7
Indexable
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDatabaseTables extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('Name');
            $table->string('Email')->unique();
            $table->string('Password');
            $table->string('Role');
            $table->timestamps();
        });

        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('Name');
            $table->text('Description')->nullable();
        });

        Schema::create('courses', function (Blueprint $table) {
            $table->id();
            $table->string('Title');
            $table->text('Description');
            $table->float('Price');
            $table->string('Thumbnail');
            $table->foreignId('InstructorID')->constrained('users')->onDelete('cascade');
            $table->foreignId('CategoryID')->constrained('categories')->onDelete('cascade');
            $table->timestamps();
        });

        Schema::create('enrollments', function (Blueprint $table) {
            $table->id();
            $table->foreignId('CourseID')->constrained('courses')->onDelete('cascade');
            $table->foreignId('UserID')->constrained('users')->onDelete('cascade');
            $table->dateTime('EnrollmentDate');
            $table->float('Progress')->default(0);
        });

        Schema::create('orders', function (Blueprint $table) {
            $table->id();
            $table->foreignId('UserID')->constrained('users')->onDelete('cascade');
            $table->dateTime('OrderDate');
            $table->float('TotalAmount');
            $table->string('PaymentStatus');
        });

        Schema::create('payments', function (Blueprint $table) {
            $table->id();
            $table->foreignId('OrderID')->constrained('orders')->onDelete('cascade');
            $table->string('PaymentMethod');
            $table->float('PaymentAmount');
            $table->dateTime('PaymentDate');
            $table->string('PaymentStatus');
        });

        Schema::create('reviews', function (Blueprint $table) {
            $table->id();
            $table->foreignId('CourseID')->constrained('courses')->onDelete('cascade');
            $table->foreignId('UserID')->constrained('users')->onDelete('cascade');
            $table->integer('Rating');
            $table->text('Comment')->nullable();
            $table->dateTime('ReviewDate');
        });

        Schema::create('lessons', function (Blueprint $table) {
            $table->id();
            $table->foreignId('CourseID')->constrained('courses')->onDelete('cascade');
            $table->string('Title');
            $table->text('Content');
            $table->integer('OrderNumber');
        });
    }

    public function down()
    {
        Schema::dropIfExists('lessons');
        Schema::dropIfExists('reviews');
        Schema::dropIfExists('payments');
        Schema::dropIfExists('orders');
        Schema::dropIfExists('enrollments');
        Schema::dropIfExists('courses');
        Schema::dropIfExists('categories');
        Schema::dropIfExists('users');
    }
}
Editor is loading...
Leave a Comment