Repository Pattern абстрагує доступ до даних за інтерфейсом, ховаючи конкретну реалізацію (Eloquent, API, файли).
interface PostRepository
{
public function published(): Collection;
}
Нюанс для Laravel: Eloquent уже є реалізацією Active Record і сам по собі є абстракцією над БД. Тому додавання репозиторіїв часто надлишкове й лише дублює API Eloquent. Виправдане, коли:
- треба підміняти джерело даних (Eloquent ↔ зовнішнє API);
- є складна доменна логіка (DDD), де моделі не мають знати про БД.
У типовому CRUD-застосунку спільнота вважає це антипатерном.