psprokofiev / laravel-repository
Laravel Repository Pattern
1.9
2025-04-08 08:09 UTC
Requires
- php: ^8.0
- laravel/framework: ^10.0 || ^11.0 || ^12.0
- webmozart/assert: ^1.11
Requires (Dev)
- ergebnis/composer-normalize: ^2.44
- friendsofphp/php-cs-fixer: ^3.68
- rector/rector: ^2.0
README
/** * Class LaravelRepository * @package Psprokofiev\LaravelRepository * * @method \Illuminate\Database\Eloquent\Model getSingle($id, string $key = 'id', $columns = ['*']) * @method \Illuminate\Database\Eloquent\Model|null findSingle($id, string $key = 'id', $columns = ['*']) * @method \Illuminate\Database\Eloquent\Builder query() */
Create new repository
php artisan make:repository User
will create \App\Repositories\UserRepository
for \App\Models\User
Add repository trait to your model
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Psprokofiev\LaravelRepository\InteractsWithRepository; class User extends Model { use InteractsWithRepository; // }
You can redefine repository class with static variable
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Psprokofiev\LaravelRepository\InteractsWithRepository; class User extends Model { use InteractsWithRepository; protected static $repository = \App\Another\Namespace\UserRepository::class; // }
Single model
\App\Models\User::repository()->getSingle(1);
App\Models\User {#4107
id: "1",
name: "Mr. Denis Rolfson III",
email: "maximus.dubuque@example.net",
email_verified_at: "2021-04-09 20:29:24",
created_at: "2021-04-09 20:29:24",
updated_at: "2021-04-09 20:29:24",
}