Раздача Laravel 5

Я следую учебнику в «Laravel 5 Essentials». Когда я пытаюсь заполнить свою базу данных командой

php artisan db:seed

я получаю сообщение об ошибке

[ReflectionException]
  Class BreedsTableSeeder does not exist

Код для BreedsTableSeeder определен ниже:

<?

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class BreedsTableSeeder extends Seeder {

    public function run() 
    {
        DB:table('breeds')->insert([
        ['id' => 1, 'name' => "Domestic"],
        ['id' => 2, 'name' => "Persian"],
        ['id' => 3, 'name' => "Siamese"],
        ['id' => 4, 'name' => "Abyssinian"],
        ]);
    }
}

DatabaseSeeder определяется как таковой:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        // $this->call(UserTableSeeder::class);
        $this->call('BreedsTableSeeder');
    }
}

1 Я заметил, что «DB» имеет другой цвет, когда я загружаю пример кода в Sublime, что заставляет меня подозревать, что это как-то связано с пространством имен DB. Поскольку я новичок в Laravel, я не уверен, где должна быть определена БД.

Я также пытался выполнить

composer dump-autoload

но это не сработало. Кто-нибудь знает, как решить эту проблему? Спасибо!


person jstein    schedule 02.09.2015    source источник
comment
как называется файл BreedsTableSeeder?   -  person yangqi    schedule 02.09.2015
comment
BreedsTableSeeder.php   -  person jstein    schedule 03.09.2015
comment
Вы знаете, я случайно неправильно написал имя файла, и мне пришлось переименовать файл. Возможно ли, что какая-то зависимость не обновилась?   -  person jstein    schedule 03.09.2015
comment
Вы пробовали composer dump-autoload? Где находится ваш файл BreedsTableSeeder?   -  person Jeremy D    schedule 03.09.2015
comment
После того, как вы переименовали имя файла с ошибкой, выполнение composer dump-autoload должно исправить ошибку.   -  person user2094178    schedule 03.09.2015
comment
Надеюсь, вам понравилась книга :) Попробуйте сбросить автозагрузчики после создания начального класса. Это немного дергано при подборе недавно созданных начальных классов.   -  person Martin Bean    schedule 03.09.2015
comment
@MartinBean Книга оказалась чрезвычайно полезной! Я впечатлен тем, что вы нашли этот пост и нашли время, чтобы ответить!   -  person jstein    schedule 10.09.2015


Ответы (3)


Пытаться:

php artisan make:seeder BreedsTableSeeder

Подробности можно найти - заполнение Laravel

person Miharbi Hernandez    schedule 02.09.2015
comment
После удаления сеялки и запуска встроенной команды Laravel php artisan db:seed выполняется без ошибок. Что делает php artisan make:seeder, чего не делал я, создавая файл сеялки вручную? - person jstein; 04.09.2015
comment
У меня была такая же ошибка, и я не знаю почему, но миграции работают только тогда, когда вы делаете это через ремесленника. - person Miharbi Hernandez; 05.09.2015
comment
Причина этого в том, что он создает файл, а затем запускает composer dump-autoload. - person Bill Garrison; 21.06.2016

Пара вещей:

  1. Похоже, ваш класс сеялки по какой-то причине не был добавлен в карту классов. Место для проверки — файл /vendor/composer/autoload_classmap.php. Если вы видите там свой класс, он должен работать. Если вы этого не сделаете, значит, в какой-то момент произошло изменение имени или что-то еще, и вам может потребоваться добавить его вручную.

  2. Вам нужно будет добавить пространство имен для класса БД. Так должно быть :

    использовать Illuminate\Support\Facades\DB;

person Jimmy Zoto    schedule 02.09.2015
comment
Спасибо за быстрый отзыв. Я проверил autoload_classmap.php, но класс был указан. Я также добавил использование Illuminate\Support\Facades\DB, и у меня все еще есть та же ошибка. - person jstein; 03.09.2015
comment
Я думаю, вам нужно полностью указать имя BreedsTableSeeder. Вероятно, это должно быть: $this-›call('database\seeds\BreedsTableSeeder'). - person Jimmy Zoto; 03.09.2015

Вам просто нужно добавить use Illuminate\Support\Facades\DB; в начало файла BreedsTableSeeder.

person Mudasir Bhat    schedule 04.09.2016