23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Laravel 6] Modelsディレクトリを作る

Posted at

新規プロジェクトを作成する時に、毎回Modelsディレクトリを作成するので、メモ。(*Laravel6系の構成です)

Laravelを初めて触る人に向けて補足すると、新規プロジェクトを作成すると、Userモデルがapp/に作成されていますが、これは、開発者の意図があります。以下、日本語ドキュメントより。

Laravelを学習し始めるとき、多くの開発者は models ディレクトリが存在しないことに戸惑います。しかし、意図的にこのディレクトリを用意していません。多くの別々の人達にとって、その意味合いは様々なため、"models"という言葉の定義は曖昧であることに私達は気づきました。ある開発者たちはすべてのビジネスロジックを総称してアプリケーションの「モデル」と呼び、一方で別の人達はリレーショナルデータベースに関連するクラスを「モデル」として参照しています。

このため、私達はEloquentモデルをデフォルトではappディレクトリ下へ設置することを選択し、開発者自分が選んだどこか別の場所へ設置してもらうことにしました。

ディレクトリ構造

これは、初学者にとっては、戸惑うかもしれませんが、Laravelを使っていくうちに、この構成は、プロジェクトによって柔軟に構成が変えられるので、良い考えだと思います。

では、モデルディレクトリの構成変更をしていきましょう。

##app/Modelsフォルダ作成

mkdir app/Models

##User.phpをModelsディレクトリへ移動

namespace(名前空間)App\Modelsに変更しておきましょう。

<?php
namespace App\Models;

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

##autoloadの参照
まず、オートロードの参照を追記しましょう。
これは、 composer.json で制御しているので修正

composer.json
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Models\\": "app/Models/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },

その他関連ファイルの名前空間を修正

Laravel6.xは以下が修正対象です。

  • /database/factories/UserFactory.php
  • /config/auth.php
  • /app/Http/Controllers/Auth/RegisterController.php
UserFactory.php
<?php

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

use App\Models\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;
/config/auth.php
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
RegisterController.php
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;

以上!

23
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?