id(); $t->string('offer_number', 32)->unique(); // FK-Typen MÜSSEN exakt zur Referenz passen. // Die Legacy-Tabellen contacts/inquiries/booking sind aus dem // alten Sequel-Pro-Export mit `bigint` (SIGNED) angelegt; die // users-Tabelle nutzt `int unsigned`. Daher hier explizit // typisieren statt foreignId() (das würde bigint UNSIGNED erzeugen). $t->bigInteger('contact_id'); $t->bigInteger('inquiry_id')->nullable(); $t->bigInteger('booking_id')->nullable(); $t->enum('status', [ 'draft', 'sent', 'accepted', 'declined', 'expired', 'withdrawn', ])->default('draft'); // FK wird in 2026_04_17_100007 nachträglich gesetzt $t->unsignedBigInteger('current_version_id')->nullable(); // users.id ist int unsigned (Legacy) $t->unsignedInteger('created_by'); $t->timestamps(); $t->softDeletes(); $t->foreign('contact_id')->references('id')->on('contacts')->restrictOnDelete(); $t->foreign('inquiry_id')->references('id')->on('inquiries')->nullOnDelete(); $t->foreign('booking_id')->references('id')->on('booking')->nullOnDelete(); $t->foreign('created_by')->references('id')->on('users'); $t->index(['status', 'contact_id']); $t->index('inquiry_id'); }); } public function down(): void { Schema::dropIfExists('offers'); } };