重命名列
要重命名一个列,可以使用表结构构建器上的 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) |