无法找到生产名称的工厂?

Unable to locate factory with name on production?

我在 artisan 命令中创建了一个模型工厂:

public function handle()
    {
        if (!$this->isDevelopment()) {
            $this->errorMessageSwitchEnvToDev();
            return;
        }

        $userId          = $this->ask('Please specifiy user_id you want to add the payouts to.',2148);
        $numberOfPayouts = $this->ask('How many payouts you want to generate?', 10);

        factory(\App\Payout::class, $numberOfPayouts)->create([
            'user_id' => $userId,
        ]);
    }

artisan 在我的本地桌面上工作,但在我的测试服务器上部署后它不工作。

我收到以下错误消息:

InvalidArgumentException  : Unable to locate factory with name [100] [App\Payout].

  at /www/htdocs/w0146a6f/dev/dev4.partner.healyworld.net/releases/20201014150056/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:269
    265|      */
    266|     protected function getRawAttributes(array $attributes = [])
    267|     {
    268|         if (! isset($this->definitions[$this->class][$this->name])) {
  > 269|             throw new InvalidArgumentException("Unable to locate factory with name [{$this->name}] [{$this->class}].");
    270|         }
    271| 
    272|         $definition = call_user_func(
    273|             $this->definitions[$this->class][$this->name],

  Exception trace:

  1   Illuminate\Database\Eloquent\FactoryBuilder::getRawAttributes([])
      /www/htdocs/w0146a6f/dev/dev4.partner.healyworld.net/releases/20201014150056/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:292

  2   Illuminate\Database\Eloquent\FactoryBuilder::Illuminate\Database\Eloquent\{closure}()
      /www/htdocs/w0146a6f/dev/dev4.partner.healyworld.net/releases/20201014150056/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php:122

我用 envoyer 做部署。

我的工厂定义在database/factories/PayoutFactory.php

<?php

$factory->define(\App\Payout::class, function (Faker\Generator $faker) {


    return [
        'user_id' => function () {
            return factory(App\User::class)->create()->id;
        },
        'amount' => $faker->randomFloat(2),
        'req_amount' => 0,
        'tax_amount' => 0,
        'withheld' => 0,
        'vat_rate' => $faker->randomNumber(2),
        'released_amount' => $faker->randomFloat(2),
        'released_amount_local_currency' => $faker->randomFloat(2),
        'status' => 'released',
        'flag' => 0,
        'created_at' => $faker->dateTimeBetween('-6 months', 'now'),
    ];
});

但是,它不适用于生产环境。我已经清除了缓存、路由并调用了 composer dump-autoload,但它仍然因同样的问题而失败。

有什么建议吗?

我也阅读了 的所有答案,但其中 none 有效。

注意这个:

Unable to locate factory with name [100]

看起来 factory() 愿意使用 states 而不是 quantity。在这种情况下,它正在寻找名为 (string) "100" 而不是 (int) 100

的工厂状态

将您的金额变量转换为整数

    $numberOfPayouts = (int) $this->ask('How many payouts you want to generate?', 10);

或者,尝试使用 ->times($amount) 方法更加明确。