2016-03-24 16 views
5

Jestem całkowicie nowa w laravel i próbuję nauczyć się robić kilka podstawowych rzeczy, więc proszę o mnie ... Więc próbuję podstawowych php rzemieślników db: seed po migracji mojej bazy danych, ale utrzymuje powrocie błąd tytułową w cmd - [ReflectionException] Klasa „UserTableSeeder” nie istniejeKlasa "UserTableSeeder" nie istnieje - Laravel 5.0 [php artisan db: seed]

Czego próbowałem

  • Zmień przestrzeń nazw „UserTableSeeder.php "Przestrzeń nazw plików" Baza danych \ nasiona; ' i "użyj bazy danych \ nasiona \ UserTableSeeder;" W 'DatabaseSeeder.php' file

Poniżej migracje

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

    class CreateUsersTable extends Migration { 

     /** 
     * Run the migrations. 
     * 
     * @return void 
     */ 
     public function up() 
     { 
      Schema::create('users', function(Blueprint $table) 
      { 
       $table->increments('id'); 
       $table->string('name'); 
       $table->string('email')->unique(); 
       $table->string('password', 60); 
       $table->rememberToken(); 
       $table->timestamps(); 
      }); 
     } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('users'); 
    } 
} 

Poniżej UserTableSeeder.php

<?php 
use App\User; 
use Illuminate\Database\Seeder; 

class UserTableSeeder extends Seeder { 

    public function run() 
    { 
     DB::table('users')->delete(); 

     User::create(['email' => '[email protected]']); 
    } 
} 

Poniżej DatabaseSeeder.php

<?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'); 
    } 
} 
+0

pan spróbować zaimportować (UserTableSeeder) klasę? – heavymetal91

Odpowiedz

23

Po utworzeniu plików w databach uruchom composer dumpautoload e/folder.

Dlaczego?

Sprawdź sekcja autoload composer.json a zobaczysz folder database/ jest ładowany przez "classmap" (source):

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
}, 

Kompozytor docs opisać classmap jak:

classmap referencje są łączone, podczas instalacji/aktualizacji, w pojedynczą tablicę kluczy => wartość, którą można znaleźć w wygenerowanym pliku sprzedawca/kompozytor /autoload_classmap.php. Ta mapa jest tworzona przez skanowanie dla klas we wszystkich plikach .php i .inc w podanych katalogach/plikach.

Możesz użyć obsługi generowania map klasowych, aby zdefiniować automatyczne ładowanie dla wszystkich bibliotek, które nie są zgodne z PSR-0/4 dla . Aby to skonfigurować, określ wszystkie katalogi lub pliki do wyszukiwania klas.

Podkreślenie dodane. Musisz uruchomić polecenie composer dumpautoload, aby wygenerować nową mapę klasy za każdym razem, gdy dodasz plik do database/, w przeciwnym razie nie będzie on automatycznie ładowany.

W przeciwieństwie do tego katalog app/ używa standardu PSR-4 do konwersji w pełni kwalifikowanej nazwy klasy do ścieżki systemu plików. Dlatego po dodaniu tam plików nie musisz dodawać dumpautoload.

+0

Jesteś najlepszy! To działa jak urok. – brunoramonalmeida

8

Spróbuj zmienić

$this->call('UserTableSeeder'); 

do

$this->call(UserTableSeeder::class); 

i spróbuj uruchomić

composer dump-autoload 
Powiązane problemy