web-dev-qa-db-ja.com

laravelで移行を機能させるために「composer dump-autoload」コマンドを実行する必要があるのはなぜですか?

アプリケーションにいくつかの移行クラスを作成して必要なテーブルを作成しましたが、エラーが発生し続けます。このコマンドを実行する必要があります。

composer dump-autoload

その後のみ、期待どおりに再び機能します。このエラーを生成する何か間違ったことをしているのですか、これは移行の通常の動作ですか?

以下は、移行プロセスの実行時に表示されるエラーです。

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  
48
Hasan Al-Natour

わかりましたので、私はあなたが抱えている問題を知っていると思います。

基本的に、Composerは作成中の移行ファイルを見ることができないため、新しいものをダウンロードしないdump-autoloadコマンドを実行する必要がありますが、含める必要があるすべてのクラスを検索します再び。プロジェクト(autoload_classmap.php)に含める必要があるすべてのクラスのリストを再生成するだけです。そのため、このコマンドを実行した後に移行が機能します。

(おそらく)修正方法composer.jsonファイルにいくつかの追加情報を追加する必要があります。

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

移行フォルダーへのパスをクラスマップ配列に追加する必要があります。次に、次の3つのコマンドを実行します...

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

これにより、現在のコンパイル済みファイルがクリアされ、必要なクラスが更新されてから書き戻されるので、再度行う必要はありません。

Webページの読み込みを高速化するには、composer dump-autoload -oを実行するのが理想的です。デフォルトではない唯一の理由は、生成に少し時間がかかるためです(ただし、わずかに気づくだけです)。

本当に迷惑なので、これをソートすることができれば幸いです:(

63
Duenna

あなたが実行する必要があります:

composer dump-autoload

動作しない場合は、次を実行する必要があります。

re-install composer
2