laravel에서 마이그레이션을 수행하려면 왜 "composer dump-autoload"명령을 실행해야합니까?


80

필요한 테이블을 만들기 위해 응용 프로그램에 마이그레이션 클래스를 만들었지 만 계속 오류가 발생합니다. 이 명령을 실행해야합니다.

composer dump-autoload

그래야만 예상대로 다시 작동합니다. 이 오류를 생성하는 잘못된 작업을 수행하고 있습니까? 아니면 마이그레이션과 관련된 정상적인 동작입니까?

다음은 마이그레이션 프로세스를 실행할 때 발생하는 오류입니다.

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  

마이그레이션을 위해 phpartisan을 사용하고 있습니까?
Duenna 2015.11.28

그래, 난 테이블을 생성하고 마이그레이션 실행 생성하는 데 사용하고
하산 알 - Natour

Illuminate \ Database \ Schema \ Blueprint를 사용 했습니까? Illuminate \ Database \ Migrations \ Migration을 사용합니다. 파일 내부에 마이그레이션 클래스를 확장하고 있습니까?
Duenna 2015

예, "use Illuminate \ Database \ Schema \ Blueprint"및 "use Illuminate \ Database \ Migrations \ Migration"을 사용합니다.
Hasan Al-Natour 2015

일반적으로 마이그레이션 파일을 만들 때이 파일은 다음 코드 와 유사하게 보입니다. 모든 것이 괜찮아 보이나요?
Duenna 2015.11.28

답변:


95

좋아요, 당신이 겪고있는 문제를 알고있는 것 같아요.

기본적으로 Composer는 생성중인 마이그레이션 파일을 볼 수 없기 때문에 새로운 항목을 다운로드하지 않지만 다시 포함해야하는 모든 클래스를 찾는 dump-autoload 명령을 실행해야합니다. 프로젝트에 포함되어야하는 모든 클래스 목록 (autoload_classmap.php)을 다시 생성하기 만하면이 명령을 실행 한 후 마이그레이션이 작동합니다.

수정 방법 (가능한 경우) composer.json 파일에 추가 정보를 추가해야합니다.

"autoload": {
    "classmap": [
        "PATH TO YOUR MIGRATIONS FOLDER"
    ],
}

마이그레이션 폴더의 경로를 클래스 맵 배열에 추가해야합니다. 그런 다음 다음 세 가지 명령을 실행하십시오.

php artisan clear-compiled 
composer dump-autoload
php artisan optimize

이렇게하면 현재 컴파일 된 파일이 지워지고 필요한 클래스를 업데이트 한 다음 다시 작성하지 않아도됩니다.

이상적으로 composer dump-autoload -o는 웹 페이지를 더 빠르게로드하기 위해 를 실행 합니다. 기본값이 아닌 유일한 이유는 생성하는 데 시간이 조금 더 걸리기 때문입니다 (하지만 약간 눈에 띕니다).

실제로 매우 성가신 것처럼 정렬 할 수 있기를 바랍니다.


6
나는 왜 laravel이 이것을 처리하지 않았는지 이해하지 못한다.
Hasan Al-Natour 2015

이미 다음과 같은 composer.json 파일이 있습니다. "autoload": { "classmap": [ "database"], "psr-4": { "App \\": "app /"}},
Hasan Al- Natour nov.

경로를 어떻게 추가해야합니까?
Hasan Al-Natour 2015

"php artisan dump-autoload"실행 중 오류가 발생했습니다. [InvalidArgumentException] 명령 "dump-autoload"가 정의되지 않았습니다.
Hasan Al-Natour 2015

4
죄송합니다. php artisan이 아닌 composer를 사용해야합니다. 그래서 작곡가 덤프 자동로드
Duenna 2011

2

다음을 실행해야합니다.

composer dump-autoload

작동하지 않으면 다음을 수행해야합니다.

re-install composer

2

짧은 대답 : 클래스 맵은 정적이지만 PSR 자동로드는 동적입니다.

클래스 맵을 사용하지 않으려면 대신 PSR 자동로드를 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.