В Laravel, как я могу получить случайный user_id из таблицы Users для генерации данных заполнения в Factory Factory?

В настоящее время в моем ModelFactory.php у меня есть:

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

Я хотел бы сгенерировать случайный user_id из одного из идентификаторов пользователей, уже сохраненных в пользовательской таблице. Я в замешательстве, потому что не знаю, как правильно отобразить вывод данных в код, и мне было интересно, как я смогу позволить Laravel выбрать случайный идентификатор пользователя и вставить его в базу данных. Спасибо! 🙂

6

Решение

В настоящее время в моем ModelFactory.php у меня есть:

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

Я хотел бы сгенерировать случайный user_id из одного из идентификаторов пользователей, уже сохраненных в пользовательской таблице. Я в замешательстве, потому что не знаю, как правильно отобразить вывод данных в код, и мне было интересно, как я смогу позволить Laravel выбрать случайный идентификатор пользователя и вставить его в базу данных. Спасибо! 🙂

самый старый «data-shortcut =» O

Другие решения

Попробуйте ниже.

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
];
});

Помните, что он получает все пользовательские данные из вашей таблицы, а затем случайным образом выбирает идентификатор. Поэтому, если ваша таблица содержит огромное количество данных, это не рекомендуется. Вместо этого в своем тестовом примере вы можете создать нового пользователя (через свою собственную фабрику) и назначить идентификатор объекту Reply, сгенерированному из вышеуказанной фабрики.

Кроме того, вы можете запросить конкретного пользователя в приведенном выше определении фабрики.

'user_id' => User::where('username', 'like', '[email protected]')->get()->random()->user_id

Если в вашей БД настроен тестовый пользователь, это позволит избежать извлечения всех пользовательских данных.

голосует «data-shortcut =» V

10
По вопросам рекламы [email protected]