000002_refactor_users_corporate_fields.php dosyası users tablosuna
corporate_account_id ekliyor. Bu, users tablosunun universal yapısını bozar!
Yeni mimaride üyeler de muzibu_corporate_accounts tablosunda tutulacak.
parent_id = NULL → Kurum sahibi, parent_id = X → Üye
database/migrations/tenant/2025_11_24_000002_refactor_users_corporate_fields.php
Bu migration silinmeli - users tablosuna hiçbir kolon eklenmeyecek
database/migrations/tenant/2025_11_24_000001_create_muzibu_corporate_accounts_table.php
Eksik kolonlar eklenmeli:
$table->id(); $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->foreignId('parent_id')->nullable()->constrained('muzibu_corporate_accounts')->onDelete('cascade'); $table->string('corporate_code', 20)->unique()->nullable(); $table->string('company_name')->nullable(); $table->boolean('is_active')->default(true); $table->timestamps(); + $table->index('parent_id');
database/migrations/tenant/2025_11_24_000003_add_parent_id_to_muzibu_corporate_accounts.php
Bu migration silinmeli - parent_id ana migration'a taşındı
Modules/Muzibu/app/Models/MuzibuCorporateAccount.php
Eksik özellikler:
members() relationship düzelt → HasMany self (parent_id üzerinden)getMembersCount() accessor eklefindByUser(), isUserOwner(), isUserMember()app/Services/Auth/CorporateService.php
Tüm metodlar yeni mimariye göre güncellenmeli:
createMember() → users yerine corporate_accounts'a kayıtgetMemberAccount() → parent_id üzerinden bulisMember() → corporate_accounts'ta parent_id kontrolügetMembers() → self-referencing sorgujoinWithCode() → corporate_accounts'a üye kaydı oluşturleave() → corporate_accounts'tan silremoveMember() → corporate_accounts'tan silgetBillingAddress() → cart_addresses'ten kurum sahibinin adresiModel'e cart_addresses ilişkisi ekle:
billingAddress() → Kurum sahibinin fatura adresi (cart_addresses üzerinden)getBillingAddressAttribute() → Üye için parent'ın adresini döndür| Özellik | Eski (Yanlış) | Yeni (Doğru) |
|---|---|---|
| Üye Kaydı | users.corporate_account_id | corporate_accounts (parent_id) |
| Üyeleri Bul | User::where('corporate_account_id', $id) | CorporateAccount::where('parent_id', $id) |
| Üye mi? | $user->corporate_account_id !== null | CorporateAccount::isUserMember($userId) |
| users Tablosu | Tenant-specific kolon var ❌ | Universal kalır ✓ |
| Fatura Adresi | corporate_accounts tablosunda | cart_addresses tablosunda ✓ |
muzibu_corporate_accounts ├── id (PK) ├── user_id (FK → users) -- Bu kaydın sahibi user ├── parent_id (FK → self) -- NULL = kurum, değer = üye ├── corporate_code -- Davet kodu (nullable - sadece kurum) ├── company_name -- Şirket adı (nullable - sadece kurum) ├── is_active └── timestamps ✓ users tablosu HİÇ DEĞİŞMEZ ✓ Fatura bilgileri cart_addresses'te
| Silinecek: | 2 migration dosyası (000002, 000003) |
| Güncellenecek: | 1 migration, 1 model, 1 service |
| Yeni Eklenecek: | Adres relationship metodları |
php artisan tenants:migrate --tenant=1001