Laravel Framework의 개발 방법은 민첩하고 반복적인 것이 특징이며 처음부터 올바른 코드를 모두 얻을 수 있을 것이라고는 기대하지 않습니다. 대신 우리는 코드를 작성하고, 테스트하고, 최종 사용자와 상호 작용하며 이해를 개선합니다.
업무를 위해서는 일련의 지원 관행이 필요합니다. 우리는 Subversion, GIT 또는 Mercurial과 같은 버전 제어 도구를 사용하여 애플리케이션의 소스 코드 파일을 저장하므로 개발 중에 오류를 실행 취소하고 변경 사항을 추적할 수 있습니다.
하지만 애플리케이션이 변경되면 버전 관리만으로는 효과적으로 관리할 수 없는 영역이 있습니다. 개발이 진행됨에 따라 Laravel 애플리케이션의 데이터베이스 스키마는 계속 발전했습니다. 여기에 테이블을 추가하고, 열 이름을 바꾸고, 인덱스를 삭제하는 등의 작업을 수행했습니다. 데이터베이스 변경은 애플리케이션 코드와 동시에 이루어집니다.
데이터베이스 스키마 변경 사항을 추적하려면 정교한 방법이 필요하며 일반적으로 여러 가지 방법이 있습니다. 작업하는 동안 모든 사람이 아키텍처 변경 사항에 대해 알아야 합니다.
프로덕션 서버에 배포하는 경우 데이터베이스 스키마를 업그레이드할 수 있는 강력한 방법이 필요합니다.
여러 컴퓨터에서 작업하는 경우 모든 데이터베이스 스키마를 동기화된 상태로 유지해야 합니다.
데이터베이스 스키마를 애플리케이션 코드와 동기화하는 것은 역사적으로 애플리케이션 개발자가 따라야 할 엄격한 규칙과 규율이 없으면 매우 번거로운 작업이었습니다. 개발자(또는 데이터베이스 관리자)가 필요한 스키마 변경을 수행합니다. 그러나 애플리케이션 코드가 이전 버전으로 롤백되면 데이터베이스 스키마 변경 사항을 취소하기 어려워 데이터베이스 버전 정보와 애플리케이션 코드 버전 정보가 일치하지 않게 됩니다.
Laravel 마이그레이션은 반복적인 방식으로 데이터베이스 스키마를 수정할 수 있는 수단을 제공합니다. 이를 통해 SQL 작업을 사용할 필요는 없지만 PHP 코드를 사용할 수 있습니다. Laravel 스키마 생성기를 사용하면 데이터베이스 테이블을 빠르게 생성하고 열이나 인덱스를 삽입할 수 있습니다. 깨끗하고 표현력이 풍부한 구문을 사용하여 데이터베이스를 조작합니다. Laravel 마이그레이션이 데이터베이스의 버전 제어라고 생각할 수도 있습니다.
데이터베이스 스키마를 생성하고 유지 관리하기 위한 상위 수준 인터페이스를 정의하면 이를 데이터베이스 독립적인 방식으로 정의할 수 있습니다. PHP를 사용하여 테이블을 생성하고, 열과 인덱스를 정의하고, 스키마를 한 번 작성하고 이를 지원되는 모든 데이터베이스 백엔드에 적용합니다. 추가 이점으로 Laravel은 어떤 마이그레이션이 적용되었는지, 어떤 마이그레이션이 여전히 적용되어야 하는지 추적합니다.
마이그레이션 기본
Laravel 마이그레이션은 애플리케이션의 app/database/migrations 디렉터리에 있는 PHP 소스 파일일 뿐입니다. 각 파일에는 기본 데이터베이스에 대한 변경 사항 집합이 포함되어 있습니다. 데이터베이스에 대한 변경은 데이터베이스별 SQL이 아닌 PHP 코드로 이루어집니다. 귀하의 PHP 마이그레이션 코드는 궁극적으로 현재 데이터베이스와 일치하는 DDL로 변환되므로 데이터베이스 플랫폼 전환이 매우 쉽습니다. 마이그레이션 코드는 자체 디렉터리에 저장되므로 다른 프로젝트 코드와 마찬가지로 버전 관리에 포함되어야 합니다. Laravel 마이그레이션은 Artisan 도구를 사용하여 명령줄에서 명시적으로 실행됩니다.
이전 버전의 Laravel에서는 마이그레이션된 파일의 이름이 001_create_employees_table.php와 같이 더 간단합니다. Laravel 3(Laravel 4.1 및 동급)에서는 이름의 첫 번째 부분이 2014_03_11_032903_create_employees_table.php와 같이 일련 번호에서 더 긴 이름으로 변경되는 새로운 명명 규칙을 도입했습니다. 파일 이름은 YYYY_MM_DD_HHMMSS_some_meaningful_name.php 형식으로, 식별된 UTC 타임스탬프와 마이그레이션 이름을 의미합니다.
또한, Laravel은 파일이 순차적으로 실행될 수 있도록 파일의 타임스탬프를 마이그레이션합니다. 타임스탬프 번호는 개별 마이그레이션 버전 번호가 적용되는 순서대로 어떤 마이그레이션이 적용되는지 정의하므로 마이그레이션의 핵심입니다.
SQL 스크립트와 마찬가지로 마이그레이션은 위에서부터 실행되므로 이러한 파일을 실행해야 합니다. 순차적 실행은 테이블이 존재하지 않을 때 열을 삽입하려고 시도할 가능성을 제거합니다.
마이그레이션 파일을 수동으로 생성할 수도 있지만 Artisan 도구를 사용하여 마이그레이션 스크립트를 생성하는 것이 더 쉽고 오류 발생 가능성도 낮습니다. 필요한 경우 나중에 이러한 파일을 편집할 수 있습니다.
앞으로 및 뒤로 마이그레이션 실행
Artisan 도구를 사용하여 데이터베이스로 마이그레이션합니다. Laravel은 특정 마이그레이션 세트를 실행하는 데 필요한 일련의 장인 작업을 제공합니다.
[참고]장인 목록을 실행할 수 있습니다장인을 보려면#🎜🎜 # 지원되는 작업 목록, 대부분의 데이터 마이그레이션 관련 작업에는 마이그레이션이라는 접두사가 붙습니다: .
알아야 할 몇 가지 일반적인 작업:
migration:install
처음으로 사용할 수 있는 마이그레이션 관련 숙련된 작업 시간 그냥 마이그레이션:설치하세요. 내부적으로 Laravel은 어떤 마이그레이션이 실행되었는지 추적하기 위해 특수 테이블을 사용합니다. 이 테이블을 생성하려면 artisan 명령줄 도구를 사용하세요:
$php artisan migration:install
migration
마이그레이션 작업을 자주 실행하게 됩니다. 애플리케이션에 추가하는 최신 테이블과 열을 지원하도록 데이터베이스를 업데이트하세요. 가장 기본적인 형태에서는 아직 실행되지 않은 모든 마이그레이션에 대해서만 up() 메서드를 실행합니다. 해당 마이그레이션이 없으면 종료됩니다. 마이그레이션된 날짜를 기준으로 이러한 마이그레이션을 실행합니다.
migration:rollback
가끔 마이그레이션을 작성할 때 실수가 발생합니다. 이미 마이그레이션을 실행했다면 마이그레이션을 편집하고 다시 실행할 수는 없습니다. Laravel은 이미 마이그레이션을 실행했다고 가정하므로 artisan을 다시 실행하면 됩니다.
마이그레이션, 아무것도하지 않습니다. 장인을 이용해야지
migration:rollback은 마이그레이션을 롤백한 다음 마이그레이션을 편집하고 artisan을 실행합니다.
올바른 버전을 실행하려면 마이그레이션하세요.
일반적으로 기존 마이그레이션을 편집하는 것은 좋은 생각이 아닙니다. 귀하와 동료에게 추가 작업이 필요하며 골치 아픈 일이 될 것입니다. 기존 버전의 마이그레이션이 프로덕션 시스템에서 이미 실행 중입니다. 대신 필요한 변경을 수행하려면 새 마이그레이션을 작성해야 합니다.
[참고]artisan migration:rollback은 마지막 마이그레이션 애플리케이션을 삭제합니다. Laravel은 전체 마이그레이션 "작업"으로 돌아갑니다. 따라서 마지막 마이그레이션 명령이 15개의 마이그레이션을 실행한 경우 15개의 마이그레이션이 모두 롤백됩니다. 열이나 테이블을 삭제하면 데이터가 손실된다는 점에 유의하세요.
migration:reset
모든 마이그레이션 롤백(모든 테이블과 데이터가 삭제됨)
migration:refresh
artisan migration:refresh 작업이 삭제됩니다. 데이터베이스를 다시 만들고 현재 스키마를 로드합니다. 이는 재설정을 실행한 후 모든 마이그레이션을 다시 실행하는 편리한 바로가기입니다.
migration:make
artisan migration:make 명령은 다음을 알려줍니다.
마이그레이션 파일 뼈대를 생성하는 Laravel(실제로는
PHP 파일)을 app/database/migrations 폴더에 저장합니다. 그런 다음 이 파일을 편집하여 테이블/인덱스 정의를 구체화할 수 있습니다. 그럼 장인님
마이그레이션 명령이 실행되면 artisan은 이 파일을 쿼리하여 생성합니다.
SQL DDL의 실제 코드입니다.
관련 권장사항:
freetds(코드)를 통해 laravel5를 sqlserver에 연결하는 방법
위 내용은 Laravel 프레임워크에서 데이터베이스 및 데이터베이스 마이그레이션에 대한 간단한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!