Как изменить столбец базы данных 'null' на 'nullable', используя миграцию laravel в mysql? - PullRequest
2 голосов
/ 24 октября 2019

Это моя таблица транспортных средств. Я хочу изменить структуру своей базы данных, используя миграцию


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateVehiclesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('vehicles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('image')->nullable();
            $table->string('reg_no')->unique();
            $table->string('fuel_type');
            $table->string('capacity');
            $table->double('rate');
            $table->boolean('req_carrier');
            $table->date('service_date');
            $table->integer('service_freq_km');
            $table->integer('service_freq_months');
            $table->date('insurance_date');
            $table->integer('insurance_freq_months');
            $table->date('eco_date');
            $table->integer('eco_freq_months');
            $table->date('licence_date');
            $table->integer('licence_freq_months');
            $table->integer('current_company');
            $table->string('status')->default("available");
            $table->timestampsTz();

        });
    }

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

Я хочу присвоить этим столбцам значения, допускающие значения NULL. 1.service_date 2.service_freq_km 3.service_freq_months

Как я могу изменить эти столбцы как обнуляемые в mysql?

Ответы [ 4 ]

1 голос
/ 24 октября 2019

Вы можете прочитать документы о Modifying Columns.

Если вы хотите использовать эту функцию, вам необходимо сначала установить этот пакет:

composer require doctrine/dbal

Затем,вам нужно создать другую миграцию, например:

2019_10_24_xxxxxx_change_columns_to_nullable_in_vehicles.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class ChangeColumnsToNullableInVehicles extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('vehicles', function (Blueprint $table) {
            $table->date('service_date')->nullable()->change();
            $table->integer('service_freq_km')->nullable()->change();
            $table->integer('service_freq_months')->nullable()->change();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('vehicles', function (Blueprint $table) {
            $table->date('service_date')->nullable(false)->change();
            $table->integer('service_freq_km')->nullable(false)->change();
            $table->integer('service_freq_months')->nullable(false)->change();
        });
    }
}
1 голос
/ 24 октября 2019

Поскольку вы перенесли файлы миграции, вам нужно создать новый файл миграции с помощью команды artisan:

php artisan make:migration change_nullable_field_columns_to_vehicles_tables --table=vehicles

Во вновь созданный файл миграции добавьте следующие коды

public function up() {
        Schema::table('vehicles', function (Blueprint $table) {
            $table->date('service_date')->nullable()->change();
            $table->integer('service_freq_km')->nullable()->change();
            $table->integer('service_freq_months')->nullable()->change();
        });
    }

// Для php artisan down

public function down(){
            Schema::table('vehicles', function (Blueprint $table) {
                $table->date('service_date')->nullable(false)->change();
                $table->integer('service_freq_km')->nullable(false)->change();
                $table->integer('service_freq_months')->nullable(false)->change();
            });
}

Теперь вы можете выполнить команду переноса

php artisan migrate
0 голосов
/ 24 октября 2019

Вам необходимо создать новый файл миграции с именем «2019_10_24_00000_update_vehicle_tables»

if(Schema::hasTable('vehicles')) {
    Schema::table('vehicles', function($table)
    {
        $table->date('service_date')->nullable();
        $table->integer('service_freq_km')->nullable();
        $table->integer('service_freq_months')->nullable();
    });
}
0 голосов
/ 24 октября 2019

создайте новый класс миграции для таблицы изменения и используйте эту функцию up

public function up()
{
    Schema::table('vehicles', function (Blueprint $table) {
        $table->date('service_date')->nullable();
        $table->integer('service_freq_km')->nullable();
        $table->integer('service_freq_months')->nullable();

   });
}

Использование Schema :: table для таблицы изменения и Schema :: create для создания новой таблицы

...