Laravel框架下向数据表新增字段时如何设置索引?
你要实现新增字段排在created_at等系统字段后方,只需要在字段定义的链式调用中追加Laravel提供的after()方法指定前置字段即可,修改后的自定义方法如下:
public function addColumnTable($table_name,$field_name,$field_type){ Schema::table($table_name, function (Blueprint $table) use($field_name,$field_type) { $table->{$field_type}($field_name)->after('created_at'); }); }
补充注意事项:
- 该字段排序能力仅支持MySQL数据库,PostgreSQL、SQLite等原生不支持字段位置调整的数据库调用该方法不会生效
- 如果需要灵活调整字段的排序位置,可以扩展方法参数,适配更多场景,示例如下:
// 新增可选参数$after_field,指定新增字段要排在哪个字段之后 public function addColumnTable($table_name,$field_name,$field_type, $after_field = null){ Schema::table($table_name, function (Blueprint $table) use($field_name,$field_type, $after_field) { $column = $table->{$field_type}($field_name); // 传入了前置字段就执行排序逻辑 if($after_field) { $column->after($after_field); } }); } // 调用示例:新增字段排在created_at之后 addColumnTable('目标表名', '自定义字段名', '字段类型', 'created_at');
内容的提问来源于stack exchange,提问作者Ferid
相关产品推荐
相关产品推荐

