Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
发布时间 - 2025-12-06 00:00:00 点击率:次Laravel迁移可版本化管理数据库结构,通过Artisan命令创建、执行和回滚迁移文件,实现多环境结构同步;使用make:migration生成文件,up()定义变更、down()回滚,配合migrate等命令操作;结合Seeder填充测试数据,提升团队协作与部署稳定性。
Laravel 的数据库迁移(Migration)功能是管理数据库结构的利器,它让你像版本控制代码一样管理数据库变更。通过命令行创建和执行迁移文件,可以轻松在不同环境中同步表结构,避免手动修改带来的不一致问题。
创建迁移文件
使用 Artisan 命令快速生成迁移文件:
php artisan make:migration create_users_table
如果需要附带模式定义,可加上 --create 或 --table 参数:
-
php artisan make:migration create_posts_table --create=posts:会自动生成带有基础字段的骨架 -
php artisan make:migration add_email_to_users_table --table=users:用于修改已有表
编写迁移逻辑
每个迁移文件包含两个核心方法:up() 和 down()。
- up():定义如何应用变更,比如创建表或添加字段
- down():定义如何回滚变更,应与 up 方法对称
示例:创建 posts 表
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->unsignedBigInteger('user_id');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('
cascade');
});
}
public function down()
{
Schema::dropIfExists('posts');
}
执行与回滚迁移
迁移写好后,通过以下命令操作:
- php artisan migrate:运行所有未执行的迁移
- php artisan migrate:rollback:回滚最后一次迁移批次
- php artisan migrate:refresh:先回滚全部再重新执行,适合开发重置
- php artisan migrate:fresh:删除所有表并重新迁移,更彻底
注意:生产环境慎用 refresh 和 fresh,建议配合备份策略。
使用 Seeder 填充测试数据
迁移只管结构,数据填充可用 Seeder 配合完成。
- 生成 Seeder:
php artisan make:seeder UserSeeder - 在 run() 方法中使用 Eloquent 或 DB 类插入数据
- 运行:
php artisan db:seed或指定类:php artisan db:seed --class=UserSeeder
可在 DatabaseSeeder 中调用多个 Seeder,形成初始化流程。
基本上就这些。合理使用 Migration 能大幅提升团队协作效率和部署稳定性,关键是保持迁移文件细粒度、语义清晰,并与实际发布节奏匹配。
# laravel
# php
# cad
# ai
# class
# table
# 数据库
# 测试数据
# 让你
# 多个
# 已有
# 可在
# 并与
# 命令行
# 好后
# 自动生成
# 再重新
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云购买域名并搭建网站?
浅析上传头像示例及其注意事项
java获取注册ip实例
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在IIS管理器中快速创建并配置网站?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何在Tomcat中配置并部署网站项目?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
网站建设保证美观性,需要考虑的几点问题!
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何在宝塔面板中创建新站点?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
MySQL查询结果复制到新表的方法(更新、插入)
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何在阿里云通过域名搭建网站?
javascript中对象的定义、使用以及对象和原型链操作小结
活动邀请函制作网站有哪些,活动邀请函文案?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
,网页ppt怎么弄成自己的ppt?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
浅谈redis在项目中的应用
JavaScript如何实现类型判断_typeof和instanceof有什么区别
原生JS实现图片轮播切换效果
Laravel观察者模式如何使用_Laravel Model Observer配置
Swift中循环语句中的转移语句 break 和 continue
Laravel安装步骤详细教程_Laravel环境搭建指南
南京网站制作费用,南京远驱官方网站?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何获取免费开源的自助建站系统源码?
什么是javascript作用域_全局和局部作用域有什么区别?
音乐网站服务器如何优化API响应速度?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何在建站之星绑定自定义域名?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
HTML 中如何正确使用模板变量为元素的 name 属性赋值
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
实例解析Array和String方法
Laravel如何创建自定义Artisan命令?(代码示例)
如何用虚拟主机快速搭建网站?详细步骤解析
如何用西部建站助手快速创建专业网站?


cascade');
});
}
public function down()
{
Schema::dropIfExists('posts');
}