IT story

라 라벨 5-장인 씨 [ReflectionException] Class SongsTableSeeder가 없습니다

hot-time 2020. 4. 16. 08:31
반응형

라 라벨 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에서 문제없이 작동합니다


나는 이것을함으로써 그것을 해결했다 :

  1. 파일 내용을 복사하십시오.
  2. 파일을 지우다.
  3. php artisan make : seeder 명령을 실행하십시오.
  4. 파일 내용을이 파일에 다시 복사하십시오.

파일 이름을 변경했기 때문에 발생했습니다. 변경 후 왜 작동하지 않는지 모르겠습니다.


File SongsTableSeeder.phpdatabase / 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에서 서버로 복사하는 것이 었습니다. 바보 같은 실수이지만 매번 서버에 파일을 복사하는 것을 잊어 버릴 수있는 파일 수를 감안할 때.

참고 URL : https://stackoverflow.com/questions/26143315/laravel-5-artisan-seed-reflectionexception-class-songstableseeder-does-not-e

반응형