📸

Laravelメモ

2021/02/28に公開

LaravelのSeederのエラー解決

LaravelでDBにテストデータを入れるためにseederを実行時、以下のエラーが出てしまったときの解決策を記載します。

php artisan db:seed

Class 'app\models\XXX' not found

以下のコードではエラーが出てしまいます。

XXXsTableSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use app\Models\XXX;

class XXXsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //テストデータ
    }
}

XXX.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class XXX extends Model
{
    use HasFactory;
}

理由:ModelのnamespaceとSeederのuseの先頭のaが異なるため別のクラスをインクルードするエラーとなります。


解決策

XXXsTableSeeder.php

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\XXX; //➀

class XXXsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //テストデータ
    }
}

XXX.php

<?php

namespace App\Models; //➁

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class XXX extends Model
{
    use HasFactory;
}

➀と➁を一致させることにより解決できます。

Discussion