Класс Laravel Seeder не найден, когда я вызываю его через DatabaseSeeder - PullRequest
0 голосов
/ 20 июня 2019

Я сделал основу на документации Миграция базы данных с именем class GridWithRoverSeeder в ./database/seeds/GridWithRoverSeeder.php:

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class GridWithRoverSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('grid')->insert([
            'id' => 1,
            'width' => 10,
            'height' => 10,
        ]);

        DB::table('rover')->insert([
            'id' => 1,
            'rover_id' => 1,
            'command' => "RRMRMMRM",
            'last_command'=>""
        ]);
    }
}

И я звоню из DatabaseSeeder:

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([
            GridWithRoverSeeder::class
        ]);
    }
}

Но когда я запускаю php artisan db:seed, я получаю следующую ошибку:

   ReflectionException  : Class GridWithRoverSeeder does not exist

У вас есть идеи, почему?

Ответы [ 2 ]

3 голосов
/ 20 июня 2019

Убедитесь, что вы запустили composer dump-autoload после создания сеялки или любого нового класса в laravel.

2 голосов
/ 20 июня 2019

Мне удалось воссоздать вашу проблему, и это помогло ее исправить.

Удалите файл сеялки и восстановите его.

php artisan make:seed GridWithRoverSeeder

Выполнить

composer dump-autoload

Позвоните сеялке в DatabaseSeeder

$this->call([
        GridWithRoverSeeder::class
    ]);

Примечание: Избегайте переименования файла вручную.

...