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

问题描述 投票:7回答:2

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

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

我想从已经存储在用户表中的一个用户ID生成一个随机user_id。我很难过,因为我不知道如何正确显示数据输出到代码,我想知道如何让Laravel选择随机用户ID并插入数据库。谢谢! :)

php database laravel model seed
2个回答
20
投票

试试下面的内容。

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()->user_id,
    'body' => $faker->paragraph
  ];
});

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

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

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

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


0
投票

它不像'user_id'那样工作:

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

但这就是它的工作原理:

User::all()->random()->**id**
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.