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

在Laravel中,如何从Users表中检索随机用户id以生成模型工厂种子数据?

丌官博文
2023-03-14

目前,在my ModelFactory.php中,我有:

$factory->define(App\Reply::class, function (Faker\Generator $faker) {
  return [
    'thread_id' => 1,
    'user_id' => 1,
    'body' => $faker->paragraph
  ];
});

我想从已经存储在用户表中的一个用户id生成一个随机用户id。我被难住了,因为我不知道如何正确地显示数据输出以编写代码,我想知道如何允许Laravel选择一个随机的用户ID并插入数据库。谢谢!:)

共有3个答案

戚弘和
2023-03-14

它不像“用户id”那样工作:

User::all()->random()->user_id

但这就是它的工作原理:

User::all()->random()->id
杜元明
2023-03-14

任何扩展Illumate\Database\Eloquent\Model的类都可以这样做:

User::inRandomOrder()->first()

或获取3个项目的集合

User::inRandomOrder()->limit(3)->get()

这可能比使用User::all()-

您的IDE(像PhpStorm)可能会非常困惑,这是一个选项。

另请参见:Laravel-雄辩或流畅的随机行

养枫涟
2023-03-14

试试下面的。

use App\User; // Assuming this is your User Model class with namespace.

$factory->define(App\Reply::class, function (Faker\Generator $faker) {
  return [
    'thread_id' => 1,
    'user_id' => User::all()->random()->id,
    'body' => $faker->paragraph
  ];
});

记住,这会从表中获取所有用户数据,然后随机选择一个id。因此,如果您的表包含大量数据,则不建议使用该表。相反,在您的测试用例中,您可以创建一个新用户(通过它自己的工厂),并将id分配给从上述工厂生成的Reply对象。

或者,您可以在上述工厂定义中查询特定用户。

'user_id' => User::where('username', 'like', 'test@user.com')->get()->random()->id

如果在数据库中设置了测试用户,这将避免提取所有用户数据。

 类似资料:
  • 问题内容: 我脑子里有一个大问题: 我可以使用种子数生成随机数: 但是我不明白的是那颗种子的作用。例如,有什么区别 该代码具有以下内容: 问题答案: 当您向one-arg 构造函数 提供特定的硬编码种子时,每次您运行该程序时,将生成的随机数将始终相同。当您需要可预测的随机数源时就需要这样做。 但是,当您不提供种子时,构造函数将根据为您选择一个种子。每次运行程序时,随机数都会不同,因为种子每次都会不

  • 问题内容: 在java中如何生成随机数? 问题答案: 在Java 1.7或更高版本中,执行此操作的标准方法如下: 请参阅相关的JavaDoc。这种方法的优点是不需要显式初始化java.util.Random实例,如果使用不当,可能会引起混乱和错误。 但是,相反,没有办法明确设置种子,因此在有用的情况下(例如测试或保存游戏状态或类似情况),很难重现结果。在这种情况下,可以使用下面显示的Java 1.

  • 我想用骰子做一个游戏,我需要在其中加入随机数(以模拟骰子的侧面。我知道如何在1到6之间进行)。使用 不能很好地工作,因为当我运行程序几次时,我得到的输出是: 所以我想要一个每次都会生成不同随机数的命令,而不是连续5次生成相同的随机数。是否有命令可以执行此操作?

  • 我正在尝试创建用于测试目的的播种机。我有通过房间id属于房间的用户,这些房间是通过房间种子程序创建的,在我的用户种子程序中,我创建一个用户并更新房间id属性,如下所示, 我的问题是,这里生成的所有用户,都获得相同的房间id,如何才能从数据库中真正获得随机房间id,并在我的播种机中使用它?

  • 问题内容: 有没有一种方法可以在SQL Server中生成具有定义的字符数的 随机 base36标识符? 我已经搜索并找到了许多将base 36转换为int,反之亦然的示例,但不是随机生成唯一ID的示例。 问题答案: 该解决方案有点冗长,但可以正常使用,并且可以轻松地适应各种需求。这是一些示例输出: 请注意,您需要创建一个视图来包装UDF内不允许使用的RAND。因此,此解决方案需要两个数据库对象,

  • 问题内容: 我正在使用此行为node.js生成sha1 id: 问题在于它每次都返回相同的id。 是否有可能每次都生成一个随机ID,因此我可以将其用作数据库文档ID? 问题答案: 在这里看看: 我将创建当前时间戳的哈希值+一个随机数,以确保哈希值唯一性: