Pivot multi-tenant. Satu user bisa punya multiple UserStore (per store). Bukan pivot Eloquent biasa — model standalone.
Definisi model
app/Models/UserStore.php
| Properti | Nilai | Sumber |
|---|---|---|
| Collection | user_stores (default konvensi) | — |
$guarded | [] | UserStore.php:15 |
| SoftDeletes | ✅ | UserStore.php:13 |
| Casts | ❌ (tidak ada) | — |
| Primary key | UUID string | UserStore.php:16-17,19-25 |
Field
| Field | Tipe | Default | Sumber |
|---|---|---|---|
id | string UUID | generated | UserStore.php:23 |
store_id | string | — | AuthService.php:130, TeamController.php:326 |
user_id | string | — | AuthService.php:131, TeamController.php:327 |
is_owner | boolean | — | AuthService.php:132, TeamController.php:328 (false) |
role | string | — | AuthService.php:133 ('Owner', 'Admin', 'Gudang', dll) |
admin_id | string/null | — | TeamController.php:330,486 |
default_device | string/null | '' | DeviceController.php:316,670 |
deleted_at | datetime | — | SoftDeletes |
created_at | datetime | auto | — |
updated_at | datetime | auto | — |
Relasi
| Nama | Tipe | FK | Sumber |
|---|---|---|---|
store | belongsTo | Store.id ← store_id | UserStore.php:27-29 |
user | belongsTo | User.id ← user_id | :31-33 |
warehouses | hasMany | Warehouse.store_id ← store_id | :35-37 |
tags | hasMany (withTrashed) | Tag.store_id ← store_id | :39-45 |
Index & constraint
- Tidak ada index di model
- Validation
Rule::unique('user_stores')->where(...)ada diBiolinkController.php:466— validasi request, bukan DB constraint - Primary key: UUID string
Contoh dokumen
{
"_id": ObjectId("..."),
"id": "uuid-userstore",
"store_id": "<store.id>",
"user_id": "<user.id>",
"is_owner": true,
"role": "Owner",
"admin_id": null,
"default_device": "",
"created_at": ISODate("..."),
"updated_at": ISODate("...")
}Catatan penting
Referensi
- Multi-tenant — scope
store_id& UserStore pivot app/Models/UserStore.php— modelapp/Services/AuthService.php— create saat registerapp/Http/Controllers/TeamController.php— manage team member