Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Architecture

Backend API Genel Yapı

Pagination

ParametreDeğer
per_pageVarsayılan: config’den, Max: 100
pageVarsayılan: 1
per-page✅ Kabul edilir — otomatik per_page’e çevirilir

Frontend per-page gönderebilir, API kabul eder. Ama yeni kodda per_page tercih et.

Sort Sistemi

Format: sort=field (ASC) veya sort=-field (DESC)

Default: -id (en yenisi önce)

Dikkat: Bazı endpoint’lerde field adı özel:

  • School: school-id (tire ile) → backend schools.id’ye map eder
  • SchoolContent: id, title, created_at (underscore/standart)

Include/Relation Sistemi

İki farklı format kabul edilir:

  • includes[]=creator&includes[]=schools — array (frontend includes[] gönderir)
  • include=creator,schools — comma-separated

Backend’de HasDynamicIncludes trait ile dinamik yükleme. Base Controller loadIncludes() metodu.

Filter Sistemi

PatternÖrnekAçıklama
Standartfilter[field]=valueTek değer
Arrayfilter[school_ids][]=1&filter[school_ids][]=2Çoklu değer
Nestedfilter[date_range][min]=2024-01-01Range
Trashedfilter[trashed]=with|onlySoft delete
Searchfilter[search]=queryGlobal arama
Nullnulls[]=field_nameNULL olan kayıtlar
Not nullnot_nulls[]=field_nameNULL olmayan

QueryCondition Helpers (Backend)

QueryCondition::equal()          // = operatör
QueryCondition::search()         // LIKE %value%
QueryCondition::dateRange()      // min/max tarih
QueryCondition::textMultiSearch() // Birden fazla alanda arama
QueryCondition::bool()           // Boolean casting
QueryCondition::array()          // array filter
QueryCondition::trashed()        // soft delete

Repository Pattern

BaseRepository kullanılıyor. Her domain için ayrı repository.