id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->string('name'); $table->text('description')->nullable(); $table->string('status', 20)->default('active')->index(); $table->timestamp('starts_at')->nullable(); $table->timestamp('ends_at')->nullable(); $table->timestamps(); $table->index(['user_id', 'status']); }); Schema::table('qr_codes', function (Blueprint $table) { $table->foreignId('campaign_id')->nullable()->after('user_id')->constrained('campaigns')->nullOnDelete(); }); } public function down(): void { Schema::table('qr_codes', function (Blueprint $table) { $table->dropConstrainedForeignId('campaign_id'); }); Schema::dropIfExists('campaigns'); } };