Когда я запускаю php artisan db: seed, я получаю следующую ошибку:
[ReflectionException] Class SongsTableSeeder does not exist
Что происходит?
Мой класс 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('SongsTableSeeder');
}
}
Мой класс SongsTableSeeder:
<?php
// Composer: "fzaninotto/faker": "v1.4.0"
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use DB;
class SongsTableSeeder extends Seeder {
public function run()
{
$faker = Faker::create();
$songs = [];
foreach(range(1, 10) as $index)
{
$songs[] = ['title' => $faker->words(rand(1,4))];
}
DB::table('songs')->insert($songs);
}
}
composer dump-autoload
?SongsTableSeeder
определение класса?Ответы:
Вам нужно положить
SongsTableSeeder
в файлSongsTableSeeder.php
в том же каталоге, где у вас естьDatabaseSeeder.php
файл.И вам нужно запустить в своей консоли:
создать новую карту классов и затем запустить:
Я только что проверил это. Работает без проблем в Laravel 5
источник
composer dumpautoload
также летитdump-autoload
регенерирует список всех классов, которые должны быть включены в проект, он используется, когда у вас есть новый класс внутри вашего проекта. Обычно при работеmake:*
добавляется только что созданный класс, но этого не произойдет, если вы создадите сеялку вручную. По крайней мере, так я понимаю, это работает с 5 минут поиска. Я не эксперт.composer dump-autoload
работал на меня.Я решил это, сделав это:
Это произошло потому, что я внес изменение в имя файла. Я не знаю, почему это не сработало после изменения.
источник
composer dump-autoload
не работает у меня. Я должен воссоздать класс сеялки, чтобы он работал.Файл SongsTableSeeder.php должен находиться в каталоге database / seed или в его подкаталоге.
Вам нужно запустить:
а потом:
или:
источник
SongsTableSeeder.php должен находиться в каталоге database / seed
Консольная команда:
а потом:
а потом:
а потом:
или:
источник
php artisan optimize
частьЯ использую самую последнюю версию Laravel 5 dev, и если вы изменили пространство имен, вам нужно будет вызвать ваш начальный класс следующим образом:
Очевидно, вам нужно заменить
todoparrot
на указанное вами пространство имен. В противном случае я получаю ту же ошибку, которая указана в исходном вопросе.источник
Не
composer dump-autoload
забывайте, что работает в связи с разделом autoload / classmapcomposer.json
. Позаботьтесь об этом, если вам нужно изменить каталог сидеров или использовать несколько каталогов для хранения сидов.источник
Если наш CustomTableSeeder находится в одном каталоге с DatabaseSeeder, мы должны использовать, как показано ниже:
в нашем файле DatabaseSeeder; тогда будет сгенерирована другая ошибка: «Класс БД не найден», тогда мы должны добавить наш фасад БД в наш файл CustomTableSeeder, как показано ниже:
это сработало для меня!
источник
Я использовал только один файл с двумя классами в нем:
источник
Если вы скопировали файлы сеялок из любого другого проекта, вам нужно запустить команду artisan,
php artisan db:seed
иначе все в порядке.источник
У меня
[ReflectionException] Class Seeder does not exist
тоже есть, и когда я используюcomposer dump-autoload
, я получаю ошибку,preg_match(): JIT compilation failed: no more memory
когда я запускаю его.Что я сделал, что я изменить ,
;pcre.jit=1
чтобыpcre.jit=Off
в php.ini ! Вы можете найти путь с помощьюphp --ini
в своем терминале!Я использую Mac с PHP 7.3! Надеюсь, это поможет любому из вас, ребята!
источник
Вы, вероятно, указываете
.php
расширение, и оно не нашло ваш класс.Что я делал:
Что решило мою проблему: что я делал:
источник
У меня была та же самая ошибка "исключения отражения". Решением было скопировать файл класса на сервер для меня из dev. глупая ошибка, но учитывая, сколько файлов мы имеем дело, легко забыть каждый раз копировать их на сервер.
источник