2016-03-24 18 views
5

Imはlaravelに全く新しいものです。いくつかの基本的なことを学びたいので、私と一緒に裸にしてください。 DB:シード私のデータベースを移行した後、それはCMDのタイトルエラーを返す保つ - [ReflectionException]クラスのUserTableSeederは「クラス 'UserTableSeeder'は存在しません - Laravel 5.0 [php artisan db:seed]

物事を存在していない私は

  • 変更] UserTableSeeder.phpの名前空間を試みがあります'File'名前空間Database \ seeds; 'と 'データベース\シース\ 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 /フォルダ。

なぜ?

チェックcomposer.json自動ロードセクションと、あなたはdatabase/フォルダは、 "クラスマップ"(source)によってロードされて表示されます:

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

docsのようにクラスマップを説明作曲:

クラスマップすべての参照は、インストール/更新時に、 にまとめられます。生成されたファイルにある単一のキー=>値の配列 vendor/composer /autoload_classmap.php。 このマップは、指定されたディレクトリ/ファイルのすべての.phpおよび.incファイルのクラスに対して、 をスキャンすることによって構築されます。

クラスマップ生成サポートを使用して、PSR-0/4に従わないすべてのライブラリ の自動ロードを定義できます。これを設定するには、 クラスを検索するすべてのディレクトリまたはファイルを指定します。

強調が追加されました。 database/にファイルを追加するたびにcomposer dumpautoloadコマンドを実行して新しいクラスマップを生成する必要があります。そうしないと、自動ロードされません。

一方、app/フォルダは、完全修飾クラス名をファイルシステムパスに変換するためにPSR-4標準を使用します。このため、ファイルを追加した後にdumpautoloadする必要はありません。

+0

あなたは最高です!それは魅力のように働く。 – brunoramonalmeida

8

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

$this->call('UserTableSeeder'); 

を変更してみてくださいと

composer dump-autoload 
関連する問題