laravelui5-odata-modeling
Model a read surface on laravelui5/odata — the OData v4 engine for Laravel. Use this when adding or reshaping anything a client reads: a list, a keyed detail, a related sub-list, a count, a filterable master, an export. The core is a five-step decision tree — native column → real Eloquent relation (free $expand) → scope ($filter) → relation plus shaping → virtual expand (only for the genuinely computed) — gated by a performance rule that overrides it: small-N detail uses discoverModel(), large-N lists stay raw-SQL custom entity sets, because the engine is fast by streaming rows rather than hydrating models. Triggers: "add an entity set", "expose this model over OData", "OData read", "master/detail", "$expand", "$filter", "$metadata", "discoverModel", "custom entity set", "AbstractEntitySet", "virtual expand", "the OData list is slow", "how do I filter/sort/page this", "expose an enum over OData", "odata:cache", "annotation", "currency/unit decimals in UI5", "code list", "hide a column from OData", "$hidden".