Laravel 『php artisan db:seed』で発生したエラーの原因と解決方法

『php artisan db:seed』を実行した際に下記のエラーが発生。

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

Error

Class "Database\Seeders\DB" not found

at C:\xampp\htdocs\CRUD_Laravel\database\seeders\PostsTableSeeder.php:19
15▕ {
16▕ $params = [
17▕ 'message' => 'Hello',
18▕ ];
➜ 19▕ DB::Table('posts')->insert($params);
20▕
21▕ $params = [
22▕ 'message' => 'World',
23▕ ];

1 C:\xampp\htdocs\CRUD_Laravel\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:36
Database\Seeders\PostsTableSeeder::run()

2 C:\xampp\htdocs\CRUD_Laravel\vendor\laravel\framework\src\Illuminate\Container\Util.php:40
Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()

 

エラーの原因

DBファサードを使用しているのにuse宣言をしていないため起きていた。

<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
//useにDBファサードの宣言がない!
class PostsTableSeeder extends Seeder
{
  /**
   * Run the database seeds.
   *
   * @return void
   */
   public function run()
   {
     $params = [
     'message' => 'Hello',
     ];
     DB::Table('posts')->insert($params); //DBファサード部分
     $params = [
       'message' => 'World',
     ];
     DB::Table('posts')->insert($params); //DBファサード部分
   }
}

 

エラー解決方法

useに『use Illuminate\Support\Facades\DB;』を記述する。
これで使用できるようになる。

<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; //use宣言を追加!
class PostsTableSeeder extends Seeder
{
  /**
   * Run the database seeds.
   *
   * @return void
   */
   public function run()
   {
     $params = [
     'message' => 'Hello',
     ];
     DB::Table('posts')->insert($params); //DBファサード部分
     $params = [
       'message' => 'World',
     ];
     DB::Table('posts')->insert($params); //DBファサード部分
   }
}