这是迁移吗?我必须将字符串数据列更改为具有现有数据的整数数据列
Topology
答案 0 :(得分:2)
根据laravel文档,您可以创建一个新的迁移并按以下步骤进行:
Schema::table('SYS_tenants', function (Blueprint $table) {
$table->integer('tena_type')->unsigned()->nullable()->change();
});
在修改列之前,请确保添加
doctrine/dbal
依赖项 到您的composer.json
文件中。
composer require doctrine/dbal
答案 1 :(得分:0)
看起来您所拥有的应该起作用:
Schema::table('SYS_tenants' ,function (Blueprint $table){
$table->integer('tena_type')->unsigned()->nullable()->change();
});
根据您的数据库,您可能需要将值转换为新类型:(对于mysql:https://www.mysqltutorial.org/mysql-cast/)
答案 2 :(得分:0)
设置新的字段类型后,可以在要更改类型的字段上使用change
方法。
public function up() {
Schema::table('SYS_tenants' ,function (Blueprint $table){
$table->string('tena_type')->change();
});
}
我认为创建表的迁移已经调用了您需要的所有需求,例如unique
,nullable
等。您可以调用change
方法,对您要执行的任何修改都没有限制,例如在该字段上添加其他mysql索引。
不要忘记在doctrine/dbal
文件中添加 composer.json
答案 3 :(得分:0)
我已经使用了Laravel迁移
$table->integer('tena_type')->unsigned()->nullable()->change();
但是它不起作用,因为表中已有数据。在这种情况下,它无法更改数据类型。我使用此DB语句来更改带有数据的数据类型。它工作正常。
DB::statement("alter table SYS_tenants modify tena_type integer not null"):