【问题标题】:Error Class 'Database\Seeders\Opportunity' not found找不到错误类“数据库\播种机\机会”
【发布时间】:2021-03-19 15:45:36
【问题描述】:

我在运行 php artisan db:seed 命令时发现了这个错误 请帮我解决这个错误

我的代码是

opportunitySeeder.php

<?php

namespace Database\Seeders;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;

class OpportunitySeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //factory(Opportunity::class, 300)->create()
        //Opportunity::factory()->count(200)->create()
        //factory(Opportunity::class, 300)->create()->each(function($opportunity){
           // $opportunity->$detail()->save(factory(OpportunityDetail::class)->make());

            Opportunity::factory()->count(300)->create()->each(function($opportunity) {
                $opportunity->detail()->save(OpportunityDeail::factory()->make()
                );

        });
    }
}

机会工厂

$this->faker->sentence(150, true), 'description' =>$this->faker->text(500), 'category_id' =>Category::all()->random()->id, 'country_id' =>Country::all()->random()->id, 'deadline' =>$this->faker->dateTime(), '组织者' =>$this->faker->company, ]; } }

【问题讨论】:

  • 那么,Database\Seeders\Opportunity 类是否存在于那个确切的命名空间中?如果它有不同的命名空间,你需要先use它。
  • 您必须为 Opportunity 模型导入 use 声明:use App\Models\Opportunity 以及 OpportunityDetail use App\Models\OpportunityDetail; 并且您还有一个拼写错误 save(OpportunityDeail::factory() 它应该是 save(OpportunityDetail::factory()
  • 您好,您尝试过 php artisan db:seed --class OpportunitySeeder

标签: php laravel laravel-artisan


【解决方案1】:

这可能是因为您没有引入机会模型。这样的事情应该可以解决这个问题。

<?php

namespace Database\Seeders;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use App\Models\Opportunity;

class OpportunitySeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

            Opportunity::factory()->count(300)->create()->each(function($opportunity) {
                $opportunity->detail()->save(OpportunityDeail::factory()->make()
                );

        });
    }
}

注意:我刚刚添加了“使用 App\Models\Opportunity;”在顶部

【讨论】:

    【解决方案2】:

    迁移和播种器发生了重大变化,因此您必须执行以下操作

    将您的种子文件夹重命名为播种机,并在每个播种机文件中添加命名空间

    命名空间数据库\播种机;

    同时在作曲家文件中进行更改 从自动加载中删除类映射并将其添加到 psr-4

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 2014-12-08
      • 2018-12-27
      • 2019-11-02
      • 2013-12-06
      • 2016-01-20
      • 1970-01-01
      • 2017-05-05
      相关资源
      最近更新 更多