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

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

composer dump-autoload

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

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

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



답변

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

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

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


답변

다음을 실행해야합니다.

composer dump-autoload

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

re-install composer


답변

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

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


답변