- 环境:
Laravel 8
- 需求用到
Laravel
数据库迁移功能,因本人是强迫症处女座所以喜欢自己命名文件例如:
![1623383324706397.png 避坑!Laravel数据库迁移功能的一个坑](https://img.php.cn/upload/image/189/208/850/1623383324706397.png)
![1623383327207412.png 避坑!Laravel数据库迁移功能的一个坑](https://img.php.cn/upload/image/336/333/124/1623383327207412.png)
- 经过几轮尝试发现
Laravel
对迁移文件的 文件名命名格式
是有固定的解析的,所以当我文件名完全按照它的风格去写的时候就正常运行了
![1623383341435221.png 避坑!Laravel数据库迁移功能的一个坑](https://img.php.cn/upload/image/813/302/667/1623383341435221.png)
![1623383345646787.png 避坑!Laravel数据库迁移功能的一个坑](https://img.php.cn/upload/image/545/249/835/1623383345646787.png)
- 吐槽的点在于:
文档中并没有提及文件名称命名风格的强制要求
故今天记录下此小坑
- 貌似是另一个坑或者说是框架的不足:那就是表结构
没办法持续集成
,例如今天我需要对某个表加字段,但此时已经迁移过了,那就会 没办法再次运行同一个迁移文件必须要创建新的迁移文件
,当然这我也理解这是为了方便回滚,但是我的需求就是为了新功能而持续加字段,并不需要回滚,所以我的 解决方案
就是每次都清空 migrations
这张表,因为这张表就是控制能否反复运行同一个迁移文件的地方,代码如下:
trait Trait_Migrate
{
/**
* @desc 数据表:初始化
* @return Void
*/
static public function CI_Table_Structure() : Void
{
# 清空记录表以保证能持续迁移
DB::table( 'migrations' ) -> truncate();
# 执行迁移
Artisan::call( 'migrate --force --path=/database/migrations/' . SELF::$CI_File );
}
}
- 总的来说完全按照框架文档的规则来就会一帆风顺,可是做项目遇到框架默认功能无法满足需求的情况是非常正常的