Laravel5.7 数据库操作迁移的实现方法(5)

重命名列

要重命名一个列,可以使用表结构构建器上的 renameColumn 方法,在重命名一个列之前,确保 doctrine/dbal 依赖已经添加到 composer.json 文件并且已经运行了 composer update 命令:

Schema::table('users', function (Blueprint $table) {
  $table->renameColumn('from', 'to');
});

注:暂不支持 enum 类型的列的修改和重命名。

删除数据列

要删除一个列,使用 Schema 构建器上的 dropColumn 方法,同样,在此之前,确保已经安装了 doctrine/dbal 依赖:

Schema::table('users', function (Blueprint $table) {
  $table->dropColumn('votes');
});

你可以通过传递列名数组到 dropColumn 方法以便可以一次从数据表中删除多个列:

Schema::table('users', function (Blueprint $table) {
  $table->dropColumn(['votes', 'avatar', 'location']);
});

注:SQLite 数据库暂不支持在单个迁移中删除或修改多个列。

有效的命令别名

命令 描述
$table->dropRememberToken(); 删除 remember_token 列
$table->dropSoftDeletes(); 删除 deleted_at 列
$table->dropSoftDeletesTz(); dropSoftDeletes() 方法别名
$table->dropTimestamps(); 删除 created_at 和 updated_at 列
$table->dropTimestampsTz(); dropTimestamps() 方法别名

索引

创建索引

Schema 构建器支持多种类型的索引,首先,让我们看一个指定列值为唯一索引的例子。要创建该索引,可以使用 unique 方法:

$table->string('email')->unique();

此外,你可以在定义列之后创建索引,例如:

$table->unique('email');

你甚至可以传递列名数组到索引方法来创建组合索引:

$table->index(['account_id', 'created_at']);

Laravel 会自动生成合理的索引名称,不过你也可以传递第二个参数到该方法用于指定索引名称:

$table->index('email', 'unique_email');

可用索引类型

命令 描述
$table->primary('id'); 添加主键索引
$table->primary(['id', 'parent_id']); 添加组合索引
$table->unique('email'); 添加唯一索引
$table->index('state'); 添加普通索引
$table->spatialIndex('location'); 添加空间索引(不支持SQLite)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5711.html