Звучит как идеальный вариант использования JSON столбцов (как для вопросов, так и для ответов). Например, вы можете решить иметь несколько действительных ответов на один вопрос с множественным выбором.
В вашей миграции:
// create_questions_table.php
...
$table->json('choices')->default(new Expression('(JSON_ARRAY())'));
$table->json('answer')->default(new Expression('(JSON_ARRAY())'));
From https://laravel.com/docs/7.x/migrations#column -модификаторы :
Использование экземпляра Expression предотвратит заключение значения в кавычки и позволит вам использовать функции c, указанные в базе данных. Одна ситуация, когда это особенно полезно, - это когда вам нужно назначить значения по умолчанию для JSON столбцов.
Затем создайте фабрику:
// QuestionFactory.php
$factory->define(Location::class, function (Faker $faker) {
$choices = $faker->words(4);
$answer = [ $choices[rand(1,4)] ];
return [
'choices' => $choices,
'answer' => $answer,
];
});
Используя библиотеку Faker, включенную в Laravel, мы можем выбрать 4 слова и случайным образом назначить одно из них ответом.