Laravel Migration Add Enum Column Example, products (ok)

https://www.itsolutionstuff.com/post/laravel-migration-add-enum-column-exampleexample.html

C:\xampp\htdocs\reset\database\migrations\2022_05_20_184747_create_products_table.php

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration {
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up() {
    Schema::create('products', function (Blueprint $table) {
      $table->id();
      $table->string('name');
      $table->enum('status', ['Pending', 'Wait', 'Active'])->default('Pending');
      $table->timestamps();
    });
  }
  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down() {
    Schema::dropIfExists('products');
  }
}

C:\xampp\htdocs\reset\database\migrations\2022_05_20_190100_update_status_column.php

<?php
use Illuminate\Database\Migrations\Migration;
class UpdateStatusColumn extends Migration {
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up() {
    DB::statement("ALTER TABLE `products` CHANGE `status` `status` ENUM('Pending','Wait','Active', 'Completed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Pending';");
  }
  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down() {
    //
  }
}

Laravel Migration Add Enum Column Example

Sometime we take column like status and you have specified values for it like pending, active, completed etc. at that time you can choose enum data type in mysql. but if you want to add enum data type in laravel migration then how you can add enum data type column in laravel.

However, i will show you examples of how to add enum column in laravel migration, how to set default value of enum column using laravel migration and how to update value on enum column in laravel migration. you can also use it in laravel 6, laravel 7, laravel 8 and laravel 9 version.

let's see bellow examples:

Add Enum Data Type Column:

<?php  use Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;  class CreateProductsTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('products', function (Blueprint $table) {            $table->id();            $table->string('name');            $table->enum('status', ['Pending', 'Wait', 'Active']);            $table->timestamps();        });    }      /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::dropIfExists('products');    }}

Add Enum Column with Default Value:

<?php  use Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;  class CreateProductsTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('products', function (Blueprint $table) {            $table->id();            $table->string('name');            $table->enum('status', ['Pending', 'Wait', 'Active'])->default('Pending');            $table->timestamps();        });    }      /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::dropIfExists('products');    }}

Update Enum Column Values:

we will add new option call "Completed", you can see how i added.

Read Also: How to Rollback Migration in Laravel?

<?php  use Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;  class UpdateStatusColumn extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        \DB::statement("ALTER TABLE `products` CHANGE `status` `status` ENUM('Pending','Wait','Active', 'Completed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Pending';");    }    /**     * Reverse the migrations.     *     * @return void     */    public function down()    {              }}

you can see bellow screen shot:

i hope it can help you....

Last updated