#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');
});
}