2015-05-11 137 views
2

我有這個DatabaseSeeder.php:Laravel 5:DB種子類未找到

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

我有這個文件MemberInvitationSeeder.php,兄弟姐妹的DatabaseSeeder.php文件

<?php 

use Illuminate\Database\Seeder; 
use App\MemberInvitation; 

    class MemberInvitationSeeder extends Seeder { 

     public function run() 
     { 
      MemberInvitation::truncate(); 

      MemberInvitation::create([ 
       'id' => 'BlahBlah' ,//com_create_guid(), 
       'partner_id' => 1, 
       'fisrt_name' => 'Thats', 
       'last_name' => 'Me', 
       'email' => '[email protected]', 
       'mobile_phone' => '444-342-4234', 
       'created_at' => new DateTime 
      ]); 

     } 
    } 

現在我打電話

php artisan db:seed 

,我也得到:

[ReflectionException]       
    Class MemberInvitationSeeder does not exist 

我什麼都試過了我能找到包括「作曲家轉儲自動加載」。無濟於事。我究竟做錯了什麼?

+0

是否'$這個 - >調用( '\ MemberInvitationSeeder');'有什麼區別? – ceejayoz

+0

或'DatabaseSeeder.php'中使用App \ MemberInvitationSeeder' –

+0

它只是聲明\ MemberInvitationSeeder未找到... – JasonGenX

回答

0

我相信我現在知道原因。

新類MemberInvitationSeeder不是在composer.json文件中自動加載類。

它不存在,因爲我手動添加的類。

現在,展望未來,如果我再次添加這樣的類,我應該怎樣才能用我的類自動磁帶自動加載機?

+1

看一下你的composer.json文件。在'autoload'部分,你應該看到它在'classmap'設置的位置,它應該在數組中包含''database'',告訴作曲者將該文件夾中的所有內容添加到自動加載器中。如果它不在那裏,那就是你的問題。如果它在那裏,請嘗試'作曲家自更新',然後'作曲家轉儲',看看是否有幫助。 – user3158900

8
php artisan make:seed MemberInvitationSeeder 

在DatabaseSeeder.php添加行run方法:

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

,最終

composer dump-autoload 

後:

php artisan db:seed 

這應該工作

如果這不是線索,檢查文件composer.json NAD確保您在 「自動加載」 部分有這樣的代碼:

"classmap": [ 
    "database" 
], 
+0

運行「composer dump-autoload」只有我需要做的事情。 – Andrew