>  기사  >  PHP 프레임워크  >  구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

藏色散人
藏色散人앞으로
2021-06-11 11:51:402136검색

다음 튜토리얼 칼럼인 laravel에서는 Laravel 데이터베이스 마이그레이션 기능의 함정을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!

  • 환경: Laravel 8Laravel 8
  • 需求用到 Laravel 数据库迁移功能,因本人是强迫症处女座所以喜欢自己命名文件例如:

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

  • 但是在执行迁移的时候报错:

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

  • 经过几轮尝试发现 Laravel 对迁移文件的 文件名命名格式 是有固定的解析的,所以当我文件名完全按照它的风格去写的时候就正常运行了

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

  • 当然类名也必须统一:

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

  • 吐槽的点在于:文档中并没有提及文件名称命名风格的强制要求 故今天记录下此小坑
  • 貌似是另一个坑或者说是框架的不足:那就是表结构 没办法持续集成,例如今天我需要对某个表加字段,但此时已经迁移过了,那就会 没办法再次运行同一个迁移文件必须要创建新的迁移文件,当然这我也理解这是为了方便回滚,但是我的需求就是为了新功能而持续加字段,并不需要回滚,所以我的 解决方案 就是每次都清空 migrations
  • 저는 Virgo이기 때문에 Laravel 데이터베이스 마이그레이션 기능을 사용해야 합니다. 강박 장애가 있는 경우 파일 이름을 직접 지정하는 것을 좋아합니다. 예:
  • 5d3874c23d044f1817eb1b777eb 7e19 .png
하지만 마이그레이션을 실행할 때 오류가 보고되었습니다:

구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정

몇 차례의 시도 끝에 Laravel 고정되어 있습니다 마이그레이션된 파일의 파일 이름 명명 형식을 파싱하므로 파일 이름을 스타일에 맞게 정확하게 작성하면 정상적으로 실행됩니다🎜🎜🎜구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정🎜🎜🎜물론 클래스 이름도 통합되어야 합니다. 🎜🎜🎜 구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정🎜 🎜🎜포인트 불만 사항은 문서 스타일 요구 사항에 파일 이름이 언급되지 않았습니다 그래서 오늘 이 함정을 기록했습니다🎜🎜또 다른 함정이나 프레임워크의 단점인 것 같습니다. 즉, 테이블 구조 지속적으로 통합할 수 없습니다. 예를 들어 오늘 필드를 추가해야 하는데 현재 마이그레이션된 경우 동일한 마이그레이션 파일을 다시 실행하고 새 마이그레이션 파일을 실행할 방법이 없습니다. 물론 롤백을 용이하게 하기 위한 것이라는 것도 이해하지만 롤백하지 않고 새 기능에 대한 필드를 계속 추가해야 하므로 <code>해결책은 지우는 것입니다. 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 );
    }

}
🎜🎜 일반적으로 말하면 순조롭게 진행됩니다. 프레임워크 문서의 규칙을 완전히 따르면서 프로젝트를 수행할 때 프레임워크의 기본 기능이 요구 사항을 충족할 수 없는 상황에 직면하게 됩니다. 🎜🎜

위 내용은 구덩이를 피하세요! Laravel 데이터베이스 마이그레이션 기능의 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제