7

2 つの User モデルを含む継承された Laravel Spark プロジェクトに取り組んでいます。

1 つは App ディレクトリ内の標準の Spark モデルですが、もう 1 つは App/Models 内にあります。2 つのモデルを結合し、Models ディレクトリ内の User モデルを参照するように auth.php を更新しましたが、composer dump-autoload は App/User モデルが見つからないと言っています。

User モデルがもう存在せず、代わりに Models ディレクトリにあることをオートローダに伝えるにはどうすればよいですか?

編集:

名前空間を App/Models に変更しましたが、まだエラーが表示されます:

class_parents(): Class App\User does not exist and could not be loaded

私の端末で dump-autoload を実行しているとき

2番目の編集:

名前空間があまり参照されていなかったのを修正しました。App\User で検索と置換を行い、問題を分類しました。

4

4 に答える 4

3

標準の Laravel インストールは、他の人が述べたように名前空間を変更するだけで機能します。ただし、Laravel Spark はUserおよびTeamモデルを参照するため、名前空間の変更だけでは機能しません。

vendor/laravel/spark-aureliusこれらの変更は追跡されないため、 (aureliusコードネームはバージョンによって異なります)内のファイルを編集しないでください。

Spark では、次の行を に追加する必要がありますapp/Providers/SparkServiceProvider.php

public function register()
{
    Spark::useUserModel('App\Models\User');
    Spark::useTeamModel('App\Models\Team');
}

App\Models上記の例を使用するのではなく、独自のカスタム ディレクトリを設定できます。

最後に、モデルに対して行ったすべての参照を更新する必要があります。たとえば、コントローラを からuse App\Userに更新しuse App\Models\Userます。

出典: Laravel Spark 6.0 のカスタマイズ

2020 年 1 月 5 日更新: .env のSTRIPE_MODELとの値も新しい名前空間に更新することを忘れないでください。BRAINTREE_MODEL

Laravel Spark 9.0 では Braintree のサポートが削除されているため、9.0 で更新するだけで済みますCASHIER_MODEL

2020 年 12 月 21 日更新: Laravel 8.x では、app\Modelsデフォルトですべてのモデルがディレクトリに保持されるようになりました。古いバージョンの Laravel (例: 6.x) を使用していて、Laravel Spark 11 を使用している場合でも、上記のいずれも行う必要はありません。Laravel Spark 11 は、モデルが にあることを前提としていますapp\Models

于 2018-09-02T19:38:38.740 に答える
2

Userモデルの名前空間を変更する必要があります:

namespace App\Models;
于 2016-11-23T12:15:38.337 に答える
2

名前空間の名前を変更してみてください。:)

namespace App\Models;
于 2016-11-23T12:27:29.013 に答える
2

名前空間を変更し、このように使用します

namespace App\Models;
于 2016-11-23T12:19:00.707 に答える