라 라벨 5-장인 씨 [ReflectionException] Class SongsTableSeeder가 없습니다
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);
}
}
SongsTableSeeder
파일 SongsTableSeeder.php
이있는 동일한 디렉토리 에 파일 을 넣어야 DatabaseSeeder.php
합니다.
그리고 콘솔에서 실행해야합니다.
composer dump-autoload
새 클래스 맵을 생성 한 후 다음을 실행하십시오.
php artisan db:seed
방금 테스트했습니다. Laravel 5에서 문제없이 작동합니다
나는 이것을함으로써 그것을 해결했다 :
- 파일 내용을 복사하십시오.
- 파일을 지우다.
- php artisan make : seeder 명령을 실행하십시오.
- 파일 내용을이 파일에 다시 복사하십시오.
파일 이름을 변경했기 때문에 발생했습니다. 변경 후 왜 작동하지 않는지 모르겠습니다.
File SongsTableSeeder.php 는 database / seeds 디렉토리 또는 서브 디렉토리 에 있어야합니다 .
다음을 실행해야합니다.
composer dump-autoload
그리고:
php artisan db:seed
또는:
php artisan db:seed --class=SongsTableSeeder
최신 Laravel 5 개발 릴리스를 실행 중이며 네임 스페이스를 변경 한 경우 다음과 같이 시드 클래스를 호출해야합니다.
$this->call('\todoparrot\TodolistTableSeeder');
분명히 todoparrot
지정된 네임 스페이스 로 바꿔야 합니다. 그렇지 않으면 원래 질문에 표시된 것과 동일한 오류가 발생합니다.
SongsTableSeeder.php는 database / seeds 디렉토리에 있어야합니다
콘솔 명령 단계 :
composer dump-autoload
그리고:
php artisan cache:clear
그리고:
php artisan optimize
그리고:
php artisan db:seed
또는:
php artisan db:seed --class=SongsTableSeeder
composer dump-autoload
의 자동로드 / 클래스 맵 섹션과 관련 하여 작동 하는 것을 잊지 마십시오 composer.json
. 파종기 디렉토리를 변경하거나 파종기를 저장하기 위해 여러 디렉토리를 사용해야하는 경우주의하십시오.
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
},
CustomTableSeeder가 DatabaseSeeder와 동일한 디렉토리에있는 경우 다음과 같이 사용해야합니다.
$this->call('database\seeds\CustomTableSeeder');
DatabaseSeeder 파일에서; 그런 다음 'DB 클래스를 찾을 수 없음'이라는 또 다른 오류가 발생합니다. 그런 다음 아래와 같이 DB 파사드를 CustomTableSeeder 파일에 추가해야합니다.
use Illuminate\Support\Facades\DB;
그것은 나를 위해 일했다!
다음 두 클래스와 함께 단일 파일 만 사용했습니다.
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Lesson;
use Faker\Factory as Faker;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//Lesson::truncate();
Model::unguard();
$this->call("LessonsTableSeeder");
}
}
class LessonsTableSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create();
foreach(range(1,30) as $index) {
Lesson::create(['title' => $faker->sentence(5), 'body' => $faker->paragraph(4)]);
}
}
}
다른 프로젝트에서 파종기 파일을 복사 한 경우 artisan 명령을 실행해야 php artisan db:seed
합니다. 그렇지 않으면 괜찮습니다.
나도 [ReflectionException] Class Seeder does not exist
있고 사용할 때 실행할 때 composer dump-autoload
오류가 발생 preg_match(): JIT compilation failed: no more memory
했습니다.
내가 한 것은 php.ini 에서로 변경 ;pcre.jit=1
된다는 것 pcre.jit=Off
입니다 ! 터미널에서 사용하여 경로를 찾을 수 있습니다 !php --ini
PHP 7.3에서 mac을 사용하고 있습니다! 여러분 중 누군가를 도울 수 있기를 바랍니다!
동일한 "반사 예외"오류가 발생했습니다. 해결책은 클래스 파일을 dev에서 서버로 복사하는 것이 었습니다. 바보 같은 실수이지만 매번 서버에 파일을 복사하는 것을 잊어 버릴 수있는 파일 수를 감안할 때.
'IT story' 카테고리의 다른 글
JavaScript를 사용하여 URL에 매개 변수 추가 (0) | 2020.04.16 |
---|---|
Rspec :“array.should == another_array”이지만 순서는 신경 쓰지 않습니다 (0) | 2020.04.16 |
linq를 사용하여 구별 선택 (0) | 2020.04.16 |
JavaScript / JQuery : $ (window) .resize 크기 조정이 완료된 후 실행하는 방법은 무엇입니까? (0) | 2020.04.16 |
너무 많은 매개 변수가 있습니까? (0) | 2020.04.16 |