デフォルトではartisanコマンドでモデルを作ると、appディレクトリに作成される。
モデルをapp/Modelsディレクトリ配下にまとめる際に修正する箇所について。
バージョン:Laravel 6.20.32
修正箇所
- composer.json
- モデルに記載のnamespaceを変更
- コントローラ(ファクトリ、シーダ)に記載のモデルのディレクトリを変更
- auth.phpに記載のモデルのディレクトリを変更
1. composer.json
"autoload"部分にModelsディレクトリを追記("Models\\": "app/Models/"
)
"autoload": {
"psr-4": {
"App\\": "app/",
"Models\\": "app/Models/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
2. モデルに記載の、namespaceを変更
namespace App;
を下記のように変更。
namespace App\Models;
3. コントローラ(ファクトリ、シーダ)に記載の、モデルのディレクトリを変更
use App\モデル名;
を下記のように変更。(ファクトリを作成している場合、同様に修正。)
use App\Models\モデル名;
シーダを作成している場合、下記修正例。
public function run()
{
factory(App\Models\モデル名::class, 1)->create();
}
4. auth.phpに記載のモデルのディレクトリを変更
認証機能を実装している場合は、config/auth.phpのUser Providersの'model'部分の修正が必要。
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
を下記のように修正。
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],