D2C kullanıcılar (veliler, adaylar) + B2B portal kullanıcıları. Aynı tablo her iki tipi barındırır.
Tam Kolon Listesi
Kolon
Tip
Nullable
Default
Açıklama
id
increments (uint)
NO
—
PK
name
varchar(255)
YES
''
(FULLTEXT INDEX — 2026-02-10)
first_name
varchar(255)
YES
NULL
last_name
varchar(255)
YES
NULL
email
varchar(255)
NO
''
(UNIQUE INDEX)
username
varchar(255)
YES
NULL
(UNIQUE INDEX)
password
varchar(60)
NO
''
Bcrypt hash
customer_id
unsignedInt
YES
NULL
→ customers.id — B2B firmaya bağlıysa
facebook_id
bigInt
YES
NULL
Facebook OAuth ID
google_id
varchar
YES
NULL
Google OAuth ID (2025-12 eklendi)
user_type_id
unsignedInt
YES
NULL
→ users_types.id
user_group_type
varchar(50)
YES
NULL
Grup tipi
is_active
enum(‘0’,‘1’)
NO
'1'
1=Aktif, 0=Pasif
created_with
varchar(255)
NO
'register'
Kayıt yöntemi
person_id
int
YES
NULL
→ persons.id
is_member
enum(‘0’,‘1’)
NO
'1'
1=Üye, 0=Değil
remember_token
varchar(100)
YES
NULL
Laravel auth token
unsubscribe
enum(‘0’,‘1’)
NO
'0'
E-posta abonelik iptali
last_activity
dateTime
YES
NULL
Son aktivite zamanı
created_at
timestamp
NO
CURRENT_TIMESTAMP
updated_at
timestamp
YES
NULL
deleted_at
timestamp
YES
NULL
Soft delete
Indexes
Index
Tip
Kolonlar
PRIMARY
PK
id
users_email_unique
UNIQUE
email
users_username_unique
UNIQUE
username
users_name_fulltext
FULLTEXT
name
users_customer_id_foreign
INDEX
customer_id
users_user_type_id_foreign
INDEX
user_type_id
users_deleted_at_index
INDEX
deleted_at
User Types (user_type_id)
ID
Name
Type
Is Admin
1
Super Admin
admin
1
2
Admin
admin
1
3
Editor
admin
1
4
Öğrenci
user
0
5
Öğretmen
user
0
6
Veli
user
0
7
Mezun
user
0
8
Okul Yöneticisi
customer
0
D2C vs B2B Ayrımı
users.customer_id IS NULL → Pure D2C (veli, aday)
users.customer_id IS NOT NULL → B2B firmaya bağlı kullanıcı
users.user_type_id IN (1,2,3) → Admin/Editor — sistemin iç kullanıcısı
users.user_type_id IN (4,5,6,7) → D2C kullanıcı
users.user_type_id = 8 → Okul yöneticisi (customer user)
-- Sadece D2C velilerSELECT * FROM usersWHERE user_type_id = 6 -- Veli AND customer_id IS NULL AND deleted_at IS NULL AND is_active = '1';-- B2B portal kullanıcıları (tüm firmalar)SELECT u.*, c.name as firmaFROM users uJOIN customers c ON c.id = u.customer_idWHERE u.customer_id IS NOT NULL AND u.deleted_at IS NULL;-- Kayıt yöntemi dağılımıSELECT created_with, COUNT(*) as sayiFROM usersWHERE deleted_at IS NULLGROUP BY created_with;