feat: update BEST_PRACTICE.md; clarify Eloquent select behavior with joins and aggregate methods
This commit is contained in:
parent
66bacaf0e1
commit
d411085400
@ -154,6 +154,8 @@ ## 3. Model & Eloquent
|
||||
| `->select('id', 'name')->get()` | `->get(['id', 'name'])` |
|
||||
| `->first()->name` | `->value('name')` |
|
||||
|
||||
Pola `->get([...])`/`->paginate($perPage, [...])` ini berlaku juga walau ada `with()`/`when()`/`join()`/dll di antara — Eloquent tidak peduli di posisi mana `select()` dipanggil relatif ke klausa lain, cuma peduli klausa itu ada sebelum eksekusi. **Kecuali** kalau query yang sama pakai `withCount()`/`withSum()`/`withAvg()`/`withMax()`/`withMin()`: method-method itu diam-diam menyuntik `select(table.*)` kalau belum ada `select()` eksplisit sebelumnya, dan Eloquent hanya menerapkan kolom dari `get($columns)`/`paginate($perPage, $columns)` kalau belum ada `select()` — begitu `withCount()` lebih dulu mengisi kolom, argumen kolom di method terminal **diabaikan diam-diam tanpa error** (balik jadi `select(*)`, bocor semua kolom). Jadi kalau ada `withCount()`/`withSum()`/dst di query, `select([...])` eksplisit **wajib** tetap dipertahankan sebelum pemanggilan `withCount()`/dst, jangan dipindah ke method terminal.
|
||||
|
||||
---
|
||||
|
||||
## 4. Controller, Request, dan Service
|
||||
|
||||
Loading…
Reference in New Issue
Block a user