Как я могу добавить новый столбец во все существующие таблицы в миграциях laravel

#mysql #laravel #laravel-migrations

Вопрос:

У меня есть существующий проект, и теперь мне нужно добавить новый столбец ко всем существующим, я понятия не имею, как я могу добиться этого в миграциях Laravel

Ответ №1:

 php artisan make:migration add_columnname_to_tablename_table --table=tablename
 

в файле тура

 public function up()
    {
        Schema::table('tablename', function (Blueprint $table) {
            $table->datatype('newcolumnname')->nullable();
        });
    }
public function down()
{
    Schema::table('tablename', function($table) {
        $table->dropColumn('newcolumnname');
    });
}
 

Бежать

 php artisan migrate
 

Комментарии:

1. Пожалуйста, отметьте как проверено, если его помощь для вас, спасибо @Phil

Ответ №2:

Предположим, вы хотите добавить столбец newcolumnname в таблицу tablename . Сначала создайте файл миграции:

 php artisan make:migration add_newcolumnname_to_tablename --table="tablename"
 

Затем в функции up сгенерированного файла миграции:

 public function up()
{
    Schema::table('tablename', function($table) {
        $table->text('newcolumnname'); //suppose the datatype is text
    });
}
 

Если вы хотите сделать это с несколькими таблицами, для команды artisan вы можете:

 php artisan make:migration add_singlecolumn_to_tables
 

Для функции up вы могли бы:

 public function up()
{
    $tables=['table1','table2','table3']; //DB::select('SHOW TABLES'); 
    for($i=0;$i<count($tables);$i  ){
        Schema::table($tables[$i], function (Blueprint $table) {
            $table->text('test_column')->nullable();    //suppose the datatype is text
        });
    }
    
}
 

Комментарии:

1. это добавит только указанную таблицу, не так ли??? я хочу, чтобы все таблицы, которые у меня есть до сих пор в моем проекте

2. Затем вы можете создать массив имен таблиц (или получить их DB::select('SHOW TABLES'); ) и выполнить цикл по массиву.

Ответ №3:

просто используйте :

 php artisan make:migration new_column_table
 

в базе данных/миграции/[дата-время]_new_column_table.php

 public function up() {
    Schema::table('table_a', function(Blueprint $table) {
        $table->text('new_column')->nullable();
    });
    
    Schema::table('table_a', function(Blueprint $table) {
        $table->text('new_column')->nullable();
    });
    
    Schema::table('table_c', function(Blueprint $table) {
        $table->text('new_column')->nullable();
    });
}

public function down()
{
    Schema::table('table_a', function (Blueprint $table) {
        $table->dropColumn('new_column');
    });
    
    Schema::table('table_b', function (Blueprint $table) {
        $table->dropColumn('new_column');
    });
    
    Schema::table('table_c', function (Blueprint $table) {
        $table->dropColumn('new_column');
    });
}