環境
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.