laravel 生成migration并执行migrate,使用seeder填充表
在不同版本的laravel里都提供有cli,此处以laravel 8为例:
-- 生成migration,laravel 8生成的migration里默认使用$table->id()代表主键,也可以使用$table->increment('id')代替
php artisan make:migration create_cars_table
-- migrate
php artisan migrate
-- migrate指定文件
php artisan migrate --path=/database/migrations/2022_04_09_212120_create_cars_table.php
-- 生成数据库表的seeder填充文件
php artisan make:seeder CarsSeeder
编辑 database/seeders/CarsSeeder.php ,在run方法里加上这样一句
\App\Models\Cars::factory(10)->create(); // 这要求database/factories/CarsFactory.php已经存在
保存后,执行 php artisan db:seed --class=CarsSeeder 进行填充
上面的操作过于繁琐,这里有一个简化的命令,那就是创建model的时候加上 -fm参数,即:
php artisan make:model Cars -fm
这里的参数 -fm 的意思是生成model文件,对应的migration迁移文件和factory文件,m 理解为 migration file,f则是factory的意思,-fm 即:生成迁移文件和factory文件,如果要重新生成,需要先删掉model、migration、factory文件后再次执行 php artisan make:model Cars -fm
有时候,数据库里已经存在对应的表,又不能直接删除这些数据库里已经存在的表,想在migrate的时候忽略已经存在的表,方法是:在迁移文件里加上一个判断,如果表已经存在,则不执行迁移,代码如下:
if (Schema::hasTable('users')) { return; }
参考资料
https://laravel.com/docs/8.x/seeding#main-content
https://www.suzu6.net/posts/213-migrate-skip-if-exist/
https://qiita.com/kunrenyouAcount/items/276b5fa3efc01cbc1864
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人