提问人:compile_error 提问时间:11/8/2023 最后编辑:compile_error 更新时间:11/8/2023 访问量:59
如何向表中添加新的 ENUM 值
How to Add a New ENUM Values to Table
问:
我想将名为“pending”的新枚举值添加到现有表中,以便枚举为 ['paid', 'unpaid', 'pending', 'free']
所以我尝试在迁移时定义它,我认为当我运行“php artisan migrate”但没有迁移时它会自动更新
那么你能帮我如何添加“待定”的新值吗?
答:
1赞
Ali
11/8/2023
#1
您的迁移文件应如下所示
public function up(): void
{
Schema::table('payment_spps', function (Blueprint $table) {
$table->enum('January', ['paid', 'unpaid', 'pending', 'free',])->default('unpaid')->change();
// other columns ...
});
}
如果它不起作用,你可以试试这个
public function up(): void
{
Schema::table('payment_spps', function (Blueprint $table) {
DB::statement("ALTER TABLE payment_spps MODIFY COLUMN `January` ENUM('paid', 'unpaid', 'pending', 'free')");
});
}
如果要使用它设置默认值
public function up(): void
{
Schema::table('payment_spps', function (Blueprint $table) {
DB::statement("ALTER TABLE payment_spps MODIFY COLUMN `January` ENUM('paid', 'unpaid', 'pending', 'free') default('unpaid') ");
});
}
1赞
Ali RaZa
11/8/2023
#2
创建新的迁移: 运行以下 Artisan 命令以创建新的迁移文件:
php artisan make:migration add_pending_to_status_enum_in_table_name --table=your_table_name
下面是迁移文件中的 up 和 down 方法可能如下所示的示例:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
class AddPendingToStatusEnumInTableName extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::statement("ALTER TABLE your_table_name MODIFY COLUMN your_enum_column ENUM('paid', 'unpaid', 'pending', 'free')");
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::statement("ALTER TABLE your_table_name MODIFY COLUMN your_enum_column ENUM('paid', 'unpaid', 'free')");
}
}
评论