vkoori / laravel-repository
There is no license information available for the latest version (0.2.2) of this package.
Base repository for laravel projects
0.2.2
2025-07-11 20:54 UTC
Requires
- illuminate/database: ^8.0|^9.0|^10.0|^11.0|^12.0
- illuminate/pagination: ^8.0|^9.0|^10.0|^11.0|^12.0
- vkoori/laravel-model-dto: ^0.2
This package is auto-updated.
Last update: 2025-07-11 20:55:42 UTC
README
Laravel Base Repository
A clean, reusable Base Repository class for Laravel apps that helps you organize data access logic using DTOs (Data Transfer Objects) and follow best practices like:
- Separation of concerns
- Reusable query logic
- Type-safe input/output
- Easy extension for model-specific behavior
Installation
You can install the package via Composer:
composer require vkoori/laravel-repository
Usage
- create dto based on this document
- Create a Model-Specific Repository
/** * @extends BaseRepository<User, UserDTO> */ class UserRepository extends BaseRepository { protected function getModel(): User { return new User(); } protected function getDTO(): UserDTO { return new UserDTO(); } }
- Use It in Your Code
$userRepo = new UserRepository(); // Create $userDTO = (new UserDTO())->setName('John')->setEmail('john@example.com')->setActive(true); $user = $userRepo->create($userDTO); // Get all $users = $userRepo->get(); // Searching and pagination $activeDTO = (new UserDTO())->setActive(true); $user = $userRepo->paginate($activeDTO); // Find by ID $user = $userRepo->findById(1); // Load Relations $user = $userRepo->findByIdOrFail(1, ['posts']); // Update $updateDto = (new UserDTO())->setActive(false); $user = $userRepo->update(1, $updateDto); // Delete $userRepo->deleteById(1); // Batch insert $values = [ (new UserDTO())->setName('Alice')->setEmail('alice@example.com'), (new UserDTO())->setName('Bob')->setEmail('bob@example.com'), ]; $userRepo->batchInsert($values);
Available Methods
Here’s a list of all available methods in BaseRepositoryInterface