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

posted @   jamstack  阅读(588)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示