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

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

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

composer dump-autoload

そうして初めて、期待どおりに再び動作します。このエラーが発生するのは、私が何か間違ったことをしているからでしょうか、それとも移行時の通常の動作なのでしょうか?

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

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

ベストアンサー1

わかりました。あなたが抱えている問題はわかっていると思います。

基本的に、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。これがデフォルトになっていない唯一の理由は、生成に少し時間がかかるためです (ただし、わずかに気付く程度です)。

本当に迷惑なので、これを解決できることを願っています :(

おすすめ記事