簡體   English   中英

找不到Laravel Seeder

[英]Laravel Seeder not found

創建表后,在遷移期間我正在運行一些播種機。 這是我的遷移文件create_institutions_table

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

class CreateInstitutionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('institutions', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('code');
            $table->timestamps();
            $table->softDeletes();
        });

        $seeder = new InstitutionsSeeder();
        $seeder->run();

        $seeder2 = new UsersSeeder();
        $seeder2->run();

        Schema::table('users', function (Blueprint $table) {
            $table->foreign('institution_id')->references('id')->on('institutions');
        });
    }

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

這是InstitutionsSeeder

use Illuminate\Database\Seeder;

class InstitutionsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('institutions')->insert([
            'name' => 'Institution One',
            'code' => 'I1',
        ]);

    }
}

這是UsersSeeder

use Illuminate\Database\Seeder;

class UsersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'first_name' => 'Admin',
            'last_name' => 'Istrator',
            'email' => 'admin@example.com',
            'institution_id' => '1',
            'password' => '$2y$10$/wYQaaaaaaagrtyh64gbdt4yuhr32l4VmFHI.sINMR/9LXsj1MTy',
        ]);
    }
}

據我所知, UsersSeeder之間沒有真正的區別,但是當InstitutionsSeeder運行良好時,嘗試實例化UsersSeeder類時,遷移失敗。 這是我從php artisan migrate:fresh命令獲得的例外:

   Symfony\Component\Debug\Exception\FatalThrowableError  : Class 'UsersSeeder' not found

  at H:\code\MyProject\database\migrations\2019_06_17_224612_create_institutions_table.php:27
    23| 
    24|                 $seeder = new InstitutionsSeeder();
    25|                 $seeder->run();
    26| 
  > 27|                 $seeder2 = new UsersSeeder();
    28|                 $seeder2->run();
    29| 
    30|                 Schema::table('users', function (Blueprint $table) {
    31|                         $table->foreign('institution_id')->references('id')->on('institutions');

  Exception trace:

  1   CreateInstitutionsTable::up()
      H:\code\MyProject\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php:379

  2   Illuminate\Database\Migrations\Migrator::Illuminate\Database\Migrations\{closure}()
      H:\code\MyProject\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php:388

  Please use the argument -v to see more details.

為什么UsersSeeder工作?

兩種可能的解決方案:

  1. 檢查類的名稱空間

  2. 運行composer dump-autoload: composer dump-autoload (您可以此處閱讀文檔

每次創建新的播種器時,請運行composer dump-autoload命令。 之后,只需使用php artisan db:seed命令運行播種器即可。 希望這會成功!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM