id(); $table->foreignId('project_id')->constrained()->cascadeOnDelete(); $table->foreignId('ticket_type_id')->constrained()->cascadeOnDelete(); $table->foreignId('ticket_priority_id')->constrained()->cascadeOnDelete(); $table->foreignId('assignee_user_id')->nullable()->constrained('users')->nullOnDelete(); $table->foreignId('author_user_id')->nullable()->constrained('users')->nullOnDelete(); $table->foreignId('ticket_status_id')->nullable()->constrained()->nullOnDelete(); $table->foreignId('parent_ticket_id')->nullable()->constrained('tickets')->nullOnDelete(); $table->boolean('is_blocked')->default(false); $table->text('blocked_comment')->nullable(); $table->unsignedInteger('sequence_number'); $table->string('ticket_key')->unique(); $table->string('title'); $table->text('description')->nullable(); $table->text('acceptance_criteria')->nullable(); $table->unsignedInteger('story_points')->nullable()->default(null); $table->timestamps(); $table->unique(['project_id', 'sequence_number']); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('tickets'); } };