【问题标题】:I get an error while creating a datatable in laravel在 laravel 中创建数据表时出现错误
【发布时间】:2021-05-27 18:06:10
【问题描述】:

有谁知道为什么我在为我的工作类别创建数据表时会收到此错误?

DatabaseSeeder.php

<?php


use Illuminate\Database\Seeder;

// Import DB and Faker services
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder
{
/**
 * Seed the application's database.
 *
 * @return void
 */
public function run()
{
    // \App\Models\User::factory(10)->create();

    $faker = Faker::create();

   

    foreach (range(1,150) as $index) {
        DB::table('jobs')->insert([
            'company' => $faker->company,
            'category' => $faker->category,
            'position' => $faker->position,
            'description' => $faker->description,
            'salary_from' => $faker->salary_from,
            'salary_to' => $faker->salary_to,
            'status' => $faker->status,

            
        ]);
   }
}  
}

我的错误是

 InvalidArgumentException 

Unknown formatter "category"

at C:\xampp\htdocs\job\vendor\fakerphp\faker\src\Faker\Generator.php:300
296▕                 return $this->formatters[$formatter];
297▕             }
298▕         }
299▕ 
➜ 300▕         throw new \InvalidArgumentException(sprintf('Unknown formatter "%s"', $formatter));
301▕     }
302▕ 
303▕     /**
304▕      * Replaces tokens ('{{ tokenName }}') with the result from the token method call

1   C:\xampp\htdocs\job\vendor\fakerphp\faker\src\Faker\Generator.php:278
  Faker\Generator::getFormatter("category")

2   C:\xampp\htdocs\ob\vendor\fakerphp\faker\src\Faker\Generator.php:497
  Faker\Generator::format("category")

这是我第一次创建datatable,我是laravel的新手,所以检查后发现使用datatable生成数据要简单得多

【问题讨论】:

    标签: php jquery laravel


    【解决方案1】:

    您正在使用 faker 不支持的某些字段。在此处查看可用字段:https://github.com/fzaninotto/Faker

    在此处查看带有更新字段的示例:

       DB::table('jobs')->insert([
                'company' => $faker->company,
                'category' => $faker->word,
                'position' => $faker->randomDigit,
                'description' => $faker->text,
                'salary_from' => $faker->randomDigit,
                'salary_to' => $faker->randomDigit,
                'status' => $faker->numberBetween(1, 3), // Change to available statusses         
            ]);
    

    【讨论】:

    • 请注意,Laravel 8 使用 FakerPHP 库,而不是之前版本的 fzaninotto 库。
    【解决方案2】:

    类别在 faker 中不存在,而且位置(如果它意味着职位,则有职位名称),可能您还想控制类别名称,所以我会创建一个数组

       DB::table('jobs')->insert([
                'company' => $faker->company,
                'category' => $faker->randomElement(['technology', 'business','law','accounting']),
                'position' => $faker->jobtitle(),
                'description' => $faker->text,
                'salary_from' => $faker->randomDigit,
                'salary_to' => $faker->randomDigit,
                'status' => $faker->numberBetween(1, 3), // Change to available statusses         
            ]);
    

    【讨论】:

    • 如果类别应该由管理员填写怎么办?应该是直到创建一个数组?
    • 不,但假设这是一个职位发布网站,某些类别将是相同的,因为如果他只创建随机单词,则没有类别将是相同的,我想他也想创建一个类别包含同一类别的职位的页面。但通常在这里我会为具有一对多(一个类别有很多工作)关系的类别创建另一个表,所以我会为类别创建播种器,我会选择类别然后播种工作并用 numberbetween
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多