LaravelのデフォルトではモデルファイルはAppディレクトリ以下に配置されます。しかし、ファイルの数が多くなることも考えてモデル用のディレクトリに入れたい場合があります。
この記事では「LravelのModelをapp/Models以下にする配置する方法」を解説しています。変更する手順を他への影響、makeコマンドでの注意点などについても紹介!
Contents
Lravelのディレクトリ構造
appディレクトリ以下
Laravelのデフォルトではモデルファイルが「app」ディレクトリの中にあります。
- app
- Console
- Exceptions
- Http
- Providers
- User.php
モデルファイルが多くなるとappの他のディレクトリと並んでゴチャゴチャしてしまいます。
そのためモデルファイルはモデルのみのディレクトリに入れるよう変更します。
途中で変更する場合の影響
途中でモデルファイルをディレクトに移動させたい場合には、既存でモデルクラスを読み込んでいる場所を書き換える必要が出てきます。数が多くなると結構手間なのでプロジェクト作成後など早いタイミングでディレクトリ構造を変更できるといいでしょう。
プロジェクト作成直後でもUserモデルを認証のconfigやユーザー登録などの処理で使っているため変更が必要にはなります。
Modelのディレクトリ構造を変える手順
ディレクトリを新たに作成して移動
まずは「app/Models」を作成します。
そして最初からある「User.php」を移動しましょう。
1 2 | $ mkdir app/Models $ mv app/User.php app/Models/ |
- app
- Console
- Exceptions
- Http
- Providers
- Models
- User.php
上記のようになります。
User.phpを編集
「User.php」のnamespaceを「App」から「App\Models」に変更しましょう。
1 2 3 4 5 6 7 8 9 10 | <?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { |
途中でディレクトリ構造を変える場合などで他にもモデルクラスがある場合には同じように変更しましょう。
configファイルを編集
「User.php」の変更で影響するconfigファイルを編集します。
下記2ファイルが対象になります。
- config/auth.php
- config/services.php
Laravel6.0以降は「config/services.php」の編集は不要になってました。
「App\User::class」を「App\Models\User::class」に変えます。
config/auth.php
68 69 70 71 72 73 74 75 76 77 78 | 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ], |
config/services.php
37 38 39 40 41 42 43 44 45 | 'stripe' => [ 'model' => App\Models\User::class, 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), 'webhook' => [ 'secret' => env('STRIPE_WEBHOOK_SECRET'), 'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300), ], ], |
makeコマンドでの指定
通常通りにmake:modelを行うとapp以下モデルが作られてしまいます。
1 | $ php artisan make:model Models/ModelName |
「Models/」をつけることで「app/Models」に作成されます。
まとめ
デフォルトではモデルクラスはappディレクトリにありますが、「app/Models」をつくるなどして自由にディレクトリ構造を変えることができます。後から変更すると変更箇所が増えるので、プロジェクト開始時考えておくといいでしょう。
以上、LravelのModelをapp/Modelsへ配置する方法でした!