diff --git a/database/migrations/2026_11_08_000100_create_projects_table.php b/database/migrations/2026_11_08_000100_create_projects_table.php index 0b531a0..aeb2ea7 100644 --- a/database/migrations/2026_11_08_000100_create_projects_table.php +++ b/database/migrations/2026_11_08_000100_create_projects_table.php @@ -15,7 +15,9 @@ return new class extends Migration $table->text('notes')->nullable(); $table->string('stage')->default('design'); $table->string('currency', 3)->default('GBP'); - $table->foreignId('created_by')->constrained('users')->restrictOnDelete(); + // Legacy users.id is signed INT, not bigint. + $table->integer('created_by'); + $table->foreign('created_by')->references('id')->on('users')->restrictOnDelete(); $table->timestamp('archived_at')->nullable(); $table->timestamps(); }); diff --git a/database/migrations/2026_11_08_000200_create_project_revisions_table.php b/database/migrations/2026_11_08_000200_create_project_revisions_table.php index 9094777..ecb4e45 100644 --- a/database/migrations/2026_11_08_000200_create_project_revisions_table.php +++ b/database/migrations/2026_11_08_000200_create_project_revisions_table.php @@ -14,8 +14,10 @@ return new class extends Migration $table->unsignedInteger('revision_number'); $table->text('change_notes')->nullable(); $table->string('status')->default('draft'); - $table->foreignId('created_by')->constrained('users')->restrictOnDelete(); - $table->foreignId('approved_by')->nullable()->constrained('users')->nullOnDelete(); + $table->integer('created_by'); + $table->foreign('created_by')->references('id')->on('users')->restrictOnDelete(); + $table->integer('approved_by')->nullable(); + $table->foreign('approved_by')->references('id')->on('users')->nullOnDelete(); $table->timestamp('approved_at')->nullable(); $table->string('fusion_project_id')->nullable(); $table->string('fusion_document_id')->nullable(); diff --git a/database/migrations/2026_11_08_000300_create_project_files_table.php b/database/migrations/2026_11_08_000300_create_project_files_table.php index 479a468..e3548f5 100644 --- a/database/migrations/2026_11_08_000300_create_project_files_table.php +++ b/database/migrations/2026_11_08_000300_create_project_files_table.php @@ -18,7 +18,8 @@ return new class extends Migration $table->string('media_type'); $table->unsignedBigInteger('byte_size'); $table->string('sha256', 64); - $table->foreignId('uploaded_by')->constrained('users')->restrictOnDelete(); + $table->integer('uploaded_by'); + $table->foreign('uploaded_by')->references('id')->on('users')->restrictOnDelete(); $table->string('printer_profile')->nullable(); $table->string('material')->nullable(); $table->timestamps(); diff --git a/database/migrations/2026_11_08_000400_create_project_cost_snapshots_table.php b/database/migrations/2026_11_08_000400_create_project_cost_snapshots_table.php index 193e8bc..4431d8f 100644 --- a/database/migrations/2026_11_08_000400_create_project_cost_snapshots_table.php +++ b/database/migrations/2026_11_08_000400_create_project_cost_snapshots_table.php @@ -21,7 +21,8 @@ return new class extends Migration $table->decimal('grand_total', 14, 4)->nullable(); $table->string('source_reference')->nullable(); $table->text('notes')->nullable(); - $table->foreignId('recorded_by')->constrained('users')->restrictOnDelete(); + $table->integer('recorded_by'); + $table->foreign('recorded_by')->references('id')->on('users')->restrictOnDelete(); $table->timestamp('recorded_at'); $table->timestamps(); }); diff --git a/database/migrations/2026_11_08_000600_create_project_releases_table.php b/database/migrations/2026_11_08_000600_create_project_releases_table.php index 4f63fc6..56a4147 100644 --- a/database/migrations/2026_11_08_000600_create_project_releases_table.php +++ b/database/migrations/2026_11_08_000600_create_project_releases_table.php @@ -14,7 +14,8 @@ return new class extends Migration $table->foreignId('revision_id')->constrained('project_revisions')->restrictOnDelete(); $table->foreignId('cost_snapshot_id')->nullable()->constrained('project_cost_snapshots')->restrictOnDelete(); $table->string('action')->default('release'); - $table->foreignId('released_by')->constrained('users')->restrictOnDelete(); + $table->integer('released_by'); + $table->foreign('released_by')->references('id')->on('users')->restrictOnDelete(); $table->timestamp('released_at'); $table->text('notes')->nullable(); $table->timestamps(); diff --git a/database/migrations/2026_11_08_000700_create_project_listing_links_table.php b/database/migrations/2026_11_08_000700_create_project_listing_links_table.php index f494607..caf2139 100644 --- a/database/migrations/2026_11_08_000700_create_project_listing_links_table.php +++ b/database/migrations/2026_11_08_000700_create_project_listing_links_table.php @@ -20,7 +20,8 @@ return new class extends Migration $table->timestamp('synced_at')->nullable(); $table->foreignId('live_release_id')->nullable()->constrained('project_releases')->nullOnDelete(); $table->unsignedInteger('lock_version')->default(0); - $table->foreignId('created_by')->constrained('users')->restrictOnDelete(); + $table->integer('created_by'); + $table->foreign('created_by')->references('id')->on('users')->restrictOnDelete(); $table->timestamp('detached_at')->nullable(); $table->timestamps(); $table->unique(['shop_id', 'listing_id', 'variation_key']); diff --git a/database/migrations/2026_11_08_000800_create_project_events_table.php b/database/migrations/2026_11_08_000800_create_project_events_table.php index c8a8ed2..374e859 100644 --- a/database/migrations/2026_11_08_000800_create_project_events_table.php +++ b/database/migrations/2026_11_08_000800_create_project_events_table.php @@ -12,7 +12,8 @@ return new class extends Migration $table->id(); $table->foreignId('project_id')->constrained('projects')->cascadeOnDelete(); $table->string('event_type'); - $table->foreignId('actor_id')->nullable()->constrained('users')->nullOnDelete(); + $table->integer('actor_id')->nullable(); + $table->foreign('actor_id')->references('id')->on('users')->nullOnDelete(); $table->string('subject_type')->nullable(); $table->unsignedBigInteger('subject_id')->nullable(); $table->json('metadata')->nullable();