Laravel

LaravelのデフォルトではモデルファイルはAppディレクトリ以下に配置されます。しかし、ファイルの数が多くなることも考えてモデル用のディレクトリに入れたい場合があります。
この記事では「LravelのModelをapp/Models以下にする配置する方法」を解説しています。変更する手順を他への影響、makeコマンドでの注意点などについても紹介!

Lravelのディレクトリ構造

appディレクトリ以下

Laravelのデフォルトではモデルファイルが「app」ディレクトリの中にあります。

  • app
    • Console
    • Exceptions
    • Http
    • Providers
    • User.php

モデルファイルが多くなるとappの他のディレクトリと並んでゴチャゴチャしてしまいます。
そのためモデルファイルはモデルのみのディレクトリに入れるよう変更します。

途中で変更する場合の影響

途中でモデルファイルをディレクトに移動させたい場合には、既存でモデルクラスを読み込んでいる場所を書き換える必要が出てきます。数が多くなると結構手間なのでプロジェクト作成後など早いタイミングでディレクトリ構造を変更できるといいでしょう。
プロジェクト作成直後でもUserモデルを認証のconfigやユーザー登録などの処理で使っているため変更が必要にはなります。

Modelのディレクトリ構造を変える手順

ディレクトリを新たに作成して移動

まずは「app/Models」を作成します。
そして最初からある「User.php」を移動しましょう。

  • app
    • Console
    • Exceptions
    • Http
    • Providers
    • Models
      • User.php

上記のようになります。

User.phpを編集

「User.php」のnamespaceを「App」から「App\Models」に変更しましょう。

途中でディレクトリ構造を変える場合などで他にもモデルクラスがある場合には同じように変更しましょう。

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

config/services.php

makeコマンドでの指定

通常通りにmake:modelを行うとapp以下モデルが作られてしまいます。

「Models/」をつけることで「app/Models」に作成されます。

まとめ

デフォルトではモデルクラスはappディレクトリにありますが、「app/Models」をつくるなどして自由にディレクトリ構造を変えることができます。後から変更すると変更箇所が増えるので、プロジェクト開始時考えておくといいでしょう。
以上、LravelのModelをapp/Modelsへ配置する方法でした!

この記事を書いた人

鳥井 慎太郎
鳥井 慎太郎
Web事業家/ブロガー
毎日楽しい。 個人開発(Webサービス、ゲームアプリ)