当前位置: 首页 > 知识库问答 >
问题:

laravel数据库种子添加添加外键id随机种子

宗政招
2023-03-14

我正在尝试创建用于测试目的的播种机。我有通过房间id属于房间的用户,这些房间是通过房间种子程序创建的,在我的用户种子程序中,我创建一个用户并更新房间id属性,如下所示,

factory(App\User::class, 150)->create([
        'host' => false,
        'room_id' =>  App\Room::inRandomOrder()->first()->id
    ]);

我的问题是,这里生成的所有用户,都获得相同的房间id,如何才能从数据库中真正获得随机房间id,并在我的播种机中使用它?

共有3个答案

林英朗
2023-03-14
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $users = factory(\App\User::class, 150)->create([
        'host' => false,
        'room_id' => $this->getRandomRoomId()
    ]);
}

private function getRandomRoomId() {
    $room = \App\Room::inRandomOrder()->first();
    return $room->id;
}

试试这个。它对我有用。希望它对你有用。

江飞章
2023-03-14

尝试:

App\Room::all()->random()->id
裴宏壮
2023-03-14

我在播种时也有同样的问题。问题是,您通过传递一个“值”数组来重写工厂的默认模型属性。您正在传递App\Room的值::inR随机命令()-

要解决此问题,可以在laravel 8中移动'room_id'=

class UsersFactory {
...

    public function definition()
    {
        return [
            'room_id' => Room::inRandomOrder()->first()->id
        ];
    }
...
}

创建这样的用户,

App\User::factory()->count(150)->create([
    'host' => false
]);

在较旧版本的laravel中,将工厂定义如下:

$factory->define(App\User::class, function ($faker) use ($factory)  {
    return [
        'room_id' => Room::inRandomOrder()->first()->id
    ];
});

创建这样的用户,

factory(App\User::class, 150)->create([
        'host' => false,
    ]);

 类似资料:
  • 我花了一整天的时间试图弄清楚下面的迁移发生了什么。 这是表的迁移。我的想法是使用“id_stays_abroad”和“user_id”作为外键。 这是添加外键的另一个迁移 当我运行php artisan迁移时,我遇到了以下错误: SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table

  • 若要添加一个外键,点击工具栏的 按钮,并由子表拖拉一个字段到父表的字段。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个外键连接器时,父和子表的边界会分别变为绿色和蓝色。此外,父和子表的参考字段均会高亮显示。 在画布中外键对象的弹出式菜单选项包括: 选项 描述 设计关系 在表设计器中编辑外键。设计器内的选项卡和选项是根据你所选择的图表数据库类型而有所

  • 若要添加一个外键,点击工具栏的 按钮,并由子表拖拉一个字段到父表的字段。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个外键连接器时,父和子表的边界会分别变为绿色和蓝色。此外,父和子表的参考字段均会高亮显示。 在画布中外键对象的弹出式菜单选项包括: 选项 描述 设计关系 在表设计器中编辑外键。设计器内的选项卡和选项是根据你所选择的图表数据库类型而有所

  • 若要添加一个外键,点击工具栏的 按钮,并由子表拖拉一个字段到父表的字段。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个外键连接器时,父和子表的边界会分别变为绿色和蓝色。此外,父和子表的参考字段均会高亮显示。 在画布中外键对象的弹出式菜单选项包括: 选项 描述 设计关系 在表设计器中编辑外键。设计器内的选项卡和选项是根据你所选择的图表数据库类型而有所

  • 我创建了一个名为用户的表。有一些表被称为公司、名称、部门。我想添加company_id,designation_id,department_id列到用户表作为外键。 我试过了,但没用 当我迁移迁移时,它会显示此错误。 Illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1005无法创建表(错误号:150“外键约束格式不正确”)(SQL:alter

  • /spark/python/pyspark/sql/dataframe.py“,第1313行,在withColumn assert isinstance(col,Column)中,”col应该是Column“assertionerror:col应该是Column 如何使用自定义函数或randint函数为列生成随机值?