Repozytorium dla Eloquent ORM

Aby utworzyć repozytorium dla Eloquent ORM w Laravelu, można postępować zgodnie z poniższymi krokami:

  1. Utwórz interfejs repozytorium

Najpierw należy utworzyć interfejs repozytorium, który będzie zawierał metody służące do pobierania, dodawania, aktualizowania i usuwania danych. Na przykład, dla modelu User, interfejs repozytorium może wyglądać następująco:

				
					namespace App\Repositories;

interface UserRepositoryInterface
{
    public function all();
    public function find($id);
    public function create(array $data);
    public function update($id, array $data);
    public function delete($id);
}

				
			
  1. Utwórz implementację repozytorium

Następnie należy utworzyć implementację repozytorium, która będzie zawierała faktyczną implementację metod z interfejsu. Implementacja repozytorium może wykorzystywać modele Eloquent ORM do wykonania operacji na danych. Na przykład, implementacja repozytorium dla modelu User może wyglądać następująco:

				
					namespace App\Repositories;

use App\Models\User;

class UserRepository implements UserRepositoryInterface
{
    public function all()
    {
        return User::all();
    }

    public function find($id)
    {
        return User::find($id);
    }

    public function create(array $data)
    {
        return User::create($data);
    }

    public function update($id, array $data)
    {
        $user = User::find($id);
        $user->update($data);
        return $user;
    }

    public function delete($id)
    {
        return User::destroy($id);
    }
}

				
			
  1. Zarejestruj repozytorium w kontenerze IoC

Ostatnim krokiem jest zarejestrowanie repozytorium w kontenerze IoC, aby można go było wstrzykiwać w pozostałych częściach aplikacji. Można to zrobić w pliku AppServiceProvider.php, używając metody bind kontenera. Na przykład, dla repozytorium UserRepository, można zarejestrować w następujący sposób:

				
					namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\UserRepositoryInterface;
use App\Repositories\UserRepository;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
    }
}

				
			

Po wykonaniu tych kroków, repozytorium UserRepository będzie gotowe do użycia w aplikacji poprzez wstrzykiwanie interfejsu UserRepositoryInterface w pozostałych częściach kodu.