📸
Laravelメモ
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