Laravelでモデルのディレクトリがない!専用ディレクトリを作成して移動させたい

 

LaravelはデフォルトではModelはapp配下に配置されています。

公式マニュアルにあるように、LaravelがModelという言葉の認識が曖昧であることからこのようになっております。

 

しかし、あるディレクトリ配下に移動してまとめて管理したいですよね。

今回はModelをディレクトリ配下に移動させる方法を残しておきます。当記事執筆時点でバージョンは7.3を使用しています。

 

移動先ディレクトリを作成

 

今回はもともとあるUser.phpを移動させてみたいと思います。

まずは移動させたいディレクトリを作成します。ターミナルを使用する場合にはプロジェクトのトップにて以下のようにします。

$ mkdir app/Models
$ mv app/User.php app/Models/User.php

 

作成と移動の後は以下のようになっていると思います。

モデルフォルダを作成

 

その後移動させたUser.phpの名前空間を書き換えておきます。

<?php

namespace App\Models; // 書き換え

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable 
{ 
  // 省略
}

 

名前空間の書き換え

 

User.phpの名前空間を変更しましたので、参照している箇所を書き換えていきます。

エディタのファイル全体検索機能等を使用して、「App\User」となっている箇所を探し、「App\Models\User」と変更します。

 

App\User // こうなっている箇所を検索して
App\Models\User // このように変更する

 

デフォルトだと、

  • config/auth.php
  • database/factories/UserFactory.php

 

の2つのファイルで、認証機能を入れている場合には

 

  • app/Http/Controllers/Auth/RegisterController.php

 

にも変更が必要な箇所があるかと思います。

 

クラスマップの再作成とキャッシュの削除

 

このままですと、Symfonyのエラーが出てしまいますので、以下のコマンドを実行して、クラスマップ再作成と設定系のキャッシュを削除をしておきます。

 

ターミナルを開いて以下のコマンドを実行しておきましょう。

$ composer dump-autoload
$ php artisan config:cache

 

これで無事ディレクトリ構成を変更できたかと思います。