【问题标题】:Populate database table with Laravel Faker from pre-populated table使用预先填充的表中的 Laravel Faker 填充数据库表
【发布时间】:2021-06-30 17:07:21
【问题描述】:

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

具体来说,我希望品牌和型号来自已在数据库中创建的表。列表的标题也是 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(),
    ];
}

【问题讨论】:

    标签: php mysql laravel factory faker


    【解决方案1】:

    当您使用first() 获取时,Laravel 中的查询构建器会返回一个表示数据库模型的对象

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

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

    注意

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

    正确的实现是创建模型(如果尚不存在)并通过外键将它们与关系链接,然后将它们附加到播种器中

    工厂应该只包含对虚假数据的清晰定义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2013-03-08
      • 2018-08-15
      相关资源
      最近更新 更多