В настоящее время в моем ModelFactory.php у меня есть:
$factory->define(App\Reply::class, function (Faker\Generator $faker) {
return [
'thread_id' => 1,
'user_id' => 1,
'body' => $faker->paragraph
];
});
Я хотел бы сгенерировать случайный user_id из одного из идентификаторов пользователей, уже сохраненных в пользовательской таблице. Я в замешательстве, потому что не знаю, как правильно отобразить вывод данных в код, и мне было интересно, как я смогу позволить Laravel выбрать случайный идентификатор пользователя и вставить его в базу данных. Спасибо! 🙂
В настоящее время в моем ModelFactory.php у меня есть:
$factory->define(App\Reply::class, function (Faker\Generator $faker) {
return [
'thread_id' => 1,
'user_id' => 1,
'body' => $faker->paragraph
];
});
Я хотел бы сгенерировать случайный user_id из одного из идентификаторов пользователей, уже сохраненных в пользовательской таблице. Я в замешательстве, потому что не знаю, как правильно отобразить вывод данных в код, и мне было интересно, как я смогу позволить Laravel выбрать случайный идентификатор пользователя и вставить его в базу данных. Спасибо! 🙂
Попробуйте ниже.
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
Если в вашей БД настроен тестовый пользователь, это позволит избежать извлечения всех пользовательских данных.