psprokofiev/laravel-repository

Laravel Repository Pattern

1.9 2025-04-08 08:09 UTC

This package is auto-updated.

Last update: 2025-06-08 08:42:31 UTC


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",
   }