40
17

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のSeeder実行時に「Class 'Database\Seeders\DB' not found」エラーが出たときの対処法

Last updated at Posted at 2020-09-23

環境

Laravel Framework 8.5.0

現象

Seederファイルを用意した状態でSeederを実行するとエラーが発生する

$ php artisan db:seed
Seeding: Database\Seeders\HogeTableSeeder

   Error 

  Class 'Database\Seeders\DB' not found

  at database/seeders/ArtistsTableSeeder.php:16
     12▕      * @return void
     13▕      */
     14▕     public function run()
     15▕     {
  ➜  16▕         DB::table('hoge')->insert([
     17▕             [
     18▕                 'user_id'       => '1',
     19▕                 'hoge_name'     => 'hoge',
     20▕             ],

      +8 vendor frames 
  9   database/seeders/DatabaseSeeder.php:18
      Illuminate\Database\Seeder::call("Database\Seeders\HogeTableSeeder")

      +24 vendor frames 
  34  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

原因

コード内でDBファサードを使用しているのにuse宣言していないため

詳細

php aritsan make:seeder HogeTableSeederを実行すると以下のSeederファイルが生成されます。

HogeTableSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class HogeTabelSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        
    }
}

DBファサードを使用するときはuse Illuminate\Support\Facades\DB;を追記する必要があります。

HogeTableSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; // ←これを追加

class HogeTabelSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // DBファサードを使用してデータ追加
        DB::table('hoge')->insert([
            [
                'user_id'       => '1',
                'hoge_name'     => 'hoge',
            ])
    }
}

再度実行すると・・・

以下のように成功のメッセージが表示されました。

$ php artisan make:seeder HogeTabelSeeder
Seeder created successfully.

参考

Laravel 5.5 データベース:シーディング

40
17
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
40
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?