Koneksi
| Nama | Driver | Sumber environment | Peran |
|---|---|---|---|
mysql | MySQL | DB_*_SQL | Default fallback Laravel dan tabel SQL yang masih digunakan |
mongodb | MongoDB | DB_HOST, DB_PORT, DB_DATABASE, dan kredensial terkait | Data utama model MongoDB |
crm | MongoDB | DB_CRM_* | Workspace dan user CRM |
covendor | MongoDB | DB_COVENDOR_* | Data vendor/co-vendor |
Default connection berasal dari DB_CONNECTION dan fallback ke mysql. Jangan menyimpulkan koneksi model hanya dari default; periksa property $connection pada model.
Model storefront
| Model | Peran |
|---|---|
Store | Identitas toko, username, domain, expiry, dan feature |
DigitalStore | Konfigurasi visual, SEO, payment/shipping setting, draft atau published |
DigitalStorePage | Halaman dan array section page builder |
PreviewDigitalStore | Token akses preview dan expiry |
Product | Katalog produk dan relasi variant, stock, checkout, order |
Variation | Variant produk |
ItemProduct | Item atau detail stock produk |
Customer | Customer storefront, dengan soft delete |
Order | Dokumen order dan relasi item/customer/team |
OrderItem | Item yang terkait dengan order |
Checkout | Data checkout yang digunakan dalam proses transaksi |
Warehouse | Origin dan data gudang untuk shipping |
Primary key
Model domain utama menggunakan UUID string yang dibuat pada event creating:
public $incrementing = false;
protected $keyType = 'string';
static::creating(function ($model) {
$model->id = (string) Str::uuid();
});Schemaless MongoDB
Migration yang tersedia terutama migration generik Laravel seperti users, sessions, failed jobs, dan personal access tokens. Tidak ada migration lengkap untuk seluruh domain storefront. Shape dokumen harus diverifikasi dari model dan controller yang menulisnya.
Tanggal dan status
Field seperti Store.expired_at perlu diperlakukan hati-hati karena sebagian flow membaca atau membandingkannya sebagai string tanggal. PreviewDigitalStore secara eksplisit melakukan cast expires_at dan last_accessed_at ke datetime.