使用来自 pre-populated table 的 Laravel Faker 填充数据库 table
Populate database table with Laravel Faker from pre-populated table
我想用虚拟数据的汽车报价列表填充 table。
具体是我希望制造商和型号来自已在数据库中创建的 table。此外,列表的标题为 Make 和 Model。我的代码是这样的,但我认为这是完全错误的:
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它们通过外键建立关系,然后将它们附加到播种机中
工厂应该只包含一个清晰干净的假数据定义
我想用虚拟数据的汽车报价列表填充 table。
具体是我希望制造商和型号来自已在数据库中创建的 table。此外,列表的标题为 Make 和 Model。我的代码是这样的,但我认为这是完全错误的:
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它们通过外键建立关系,然后将它们附加到播种机中
工厂应该只包含一个清晰干净的假数据定义