id(); $table->foreignId('subject_id')->constrained()->cascadeOnDelete(); $table->string('title'); $table->text('description')->nullable(); $table->boolean('active')->default(true); $table->timestamps(); }); Schema::create('quiz_questions', function (Blueprint $table) { $table->id(); $table->foreignId('quiz_id')->constrained()->cascadeOnDelete(); $table->unsignedSmallInteger('sort_order')->default(0); $table->enum('type', ['multiple_choice','exclusion','true_false','free_text']); $table->text('question_text'); $table->unsignedSmallInteger('time_limit')->nullable(); $table->string('correct_answer')->nullable(); $table->timestamps(); }); Schema::create('quiz_answer_options', function (Blueprint $table) { $table->id(); $table->foreignId('quiz_question_id')->constrained()->cascadeOnDelete(); $table->string('text'); $table->boolean('is_correct')->default(false); $table->unsignedSmallInteger('sort_order')->default(0); }); } public function down(): void { Schema::dropIfExists('quiz_answer_options'); Schema::dropIfExists('quiz_questions'); Schema::dropIfExists('quizzes'); } };