schedule2020-09-02

LaravelのModelsのディレクトリ構成を変更する

LaravelのUserモデルはapp/User.phpにある。 Artisanコマンドで追加したモデルもapp/に作られていき収拾がつかなくなっていく。 整頓のためapp/Models/ディレクトリを作って、そこにモデルを置くよう構成を変更していきます。

モデルが増えてから変更するのは大変なため、早めに構成を決めておいたほうが良いです。

環境

  • Laravel 7.27.0

バージョン 5.x も同様な設定で可能かと。

Userモデルを移動する

まずはapp/Models/ディレクトリを作って、そこにUserモデルを移動します。 移動後に名前空間をパスに合わせ変更します。 変更するファイルはapp/User.phpだけでなくauth.phpUserFactory.phpもです。

app/User.phpapp/Models/User.phpに移動させ、名前空間を変更する。

<php

-- namespace App;
++ namespace App/Models;

config/auth.php

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
--          'model' => App\User::class,
++          'model' => App\Models\User::class,
        ],

database/factories/UserFactory.php

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

-- use App\User
++ use App\Models\User
use Faker\Generator as Faker;
use Illuminate\Support\Str;

キャッシュをクリアする

モデルのディレクトリを変更したらキャッシュをクリアします。

$ composer dump-autoload
$ php artisan cache:clear
$ php artisan config:clear

モデルの生成先ディレクトリを指定する

artisanコマンドで生成する際にはモデルのディレクトリを指定できます。

# app/Hoge.phpができる 
$ php artisan make:model Hoge

# app/Models/Hoge.phpができる 
$ php artisan make:model Models/Hoge

こんな感じでモデルのディレクトリ構成を変更できます。

参考