使用 Laravel Faker 从预先填充的表中填充数据库表

问题描述

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

具体是我希望品牌和型号来自已在数据库中创建的表。清单的标题也是 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 中的查询构建器在您使用 first() 获取时返回一个表示数据库模型的对象

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

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

注意

以上答案仅解决了当前代码中的问题

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...