Aby utworzyć repozytorium dla Eloquent ORM w Laravelu, można postępować zgodnie z poniższymi krokami:
- 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);
}
- 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);
}
}
- 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.