问题描述
我想用虚拟数据填充汽车报价列表。
具体是我希望品牌和型号来自已在数据库中创建的表。清单的标题也是 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 中的查询构建器在您使用 first()
获取时返回一个表示数据库模型的对象
当您将属性设置为其他模型属性时,您应该访问这些属性
return [
'title' => $make->make . " " . $model->model,'make' => $make->make,'model' => $model->model,'year' => $this->faker->numberBetween(1950,2021),'slug' => $this->faker->word(),];
注意
以上答案仅解决了当前代码中的问题
正确的实现是创建模型(如果不存在)并通过外键将它们与关系联系起来,然后将它们附加到播种机中
工厂应该只包含对虚假数据的清晰和干净的定义