使用来自 pre-populated table 的 Laravel Faker 填充数据库 table

Populate database table with Laravel Faker from pre-populated table

我想用虚拟数据的汽车报价列表填充 table。

具体是我希望制造商和型号来自已在数据库中创建的 table。此外,列表的标题为 MakeModel。我的代码是这样的,但我认为这是完全错误的:

public function definition()
{
    $id = DB::table('cars')->select('id')->inRandomOrder()->first();
    $make = DB::table('cars')->where('id', $id)->select('make')->first();
    $model = DB::table('cars')->where('id', $id)->select('model')->first();

    return [
        'title' => $make . " " . $model,
        'make' => $make,
        'model' => $model,
        'year' => $this->faker->numberBetween(1950, 2021),
        'slug' => $this->faker->word(),
    ];
}

Laravel 中的查询生成器 returns 当您使用 first()

获取时表示数据库模型的对象

当您将这些属性设置为其他模型属性时,您应该访问这些属性

return [
    'title' => $make->make . " " . $model->model,
    'make' => $make->make,
    'model' => $model->model,
    'year' => $this->faker->numberBetween(1950, 2021),
    'slug' => $this->faker->word(),
];

备注

上面的答案只解决了当前代码

中的问题

正确的实施方式是创建模型(如果尚不存在的话)并link它们通过外键建立关系,然后将它们附加到播种机中

工厂应该只包含一个清晰干净的假数据定义