2016-03-24 5 views
5

Im совершенно новый для laravel и im, пытающийся научиться делать несколько основных вещей, поэтому, пожалуйста, со мной со мной .. Так что я пытаюсь использовать базовый PHP-мастер дб: семена после миграции своей базы данных, но он постоянно возвращается ошибка заголовка в ЦМДЕ - [ReflectionException] Class «UserTableSeeder» не существуетКласс 'UserTableSeeder' не существует - Laravel 5.0 [php artisan db: seed]

Вещи, которые я попробовал

  • Изменить пространство имен «UserTableSeeder.php 'File' namespace Database \ seed; ' и 'использовать базу данных \ seed \ UserTableSeeder;' в файле '' DatabaseSeeder.php

Ниже миграциях

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

Ниже 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]']); 
    } 
} 

Ниже 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

вы пытались импортировать (UserTableSeeder) класс? – heavymetal91

ответ

23

Запустите composer dumpautoload после создания файлов в базах данных e/folder.

Почему?

Проверьте автозагрузку раздел composer.json и вы увидите папку database/ загружается "classmap" (source):

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

Композитор docs описывают classmap как:

classmap ссылки объединяются во время установки/обновления в массив с одним ключом =>, который может быть найден в сгенерированном файле поставщик/композитор /autoload_classmap.php. Эта карта построена путем сканирования для классов во всех файлах .php и .inc в указанных каталогах/файлах.

Вы можете использовать поддержку поколения classmap для определения автозагрузки для всех библиотек, которые не соответствуют PSR-0/4. Чтобы настроить это, вы должны указать все каталоги или файлы для поиска классов.

Акцент добавлен. Вам нужно запустить команду composer dumpautoload, чтобы генерировать новую карту классов каждый раз, когда вы добавляете файл в database/, иначе он не будет автоматически загружен.

В отличие от этого, папка app/ использует стандарт PSR-4 для преобразования полного имени класса в путь к файловой системе. Вот почему вам не нужно dumpautoload после добавления файлов туда.

+0

Ты лучший! Отлично работает. – brunoramonalmeida

8

Try изменения

$this->call('UserTableSeeder'); 

в

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

и попробуйте запустить

composer dump-autoload 
Смежные вопросы