Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Нужен совет по структуре репозиториев в ларавеле . В общем сейчас есть просто модели , допусим Category с методами примера GetAllCategories() и т.д , которые реализованы с помощью query builder , eloquent не используется . Хочу переделать свой проект на архитектуру controller-service-repository . с контроллерами и сервисами более менее понятно , а вот с репозиториями не совсем . Как они должны быть реализованы именно с quaery builder ?
Писать sql код нужно прямо в методах репозиториях ? тогда получается , что у меня все модели станут репозиториями и сущностей как таких вообще не останется . или делать еще одну ненужную абстракцию поверх модели Category ? это тоже как-то не очень разумно .
class CategoryRepository
{
public function getAllCategories()
{
return Category::getAllCategories();
}
}
Помогите разобраться
Не в сети
1) Модель не должна привязываться к реализации хранения, это просто объект
2) Объект репозитория реализовывает логику хранения моделей(база, файлы, кеш и т.д.)
interface MemberRepository {
public function save(Member $member);
public function getAll();
public function findById(MemberId $memberId);
}
class ArrayMemberRepository implements MemberRepository {
private $members = [];
public function save(Member $member) {
$this->members[(string)$member->getId()] = $member;
}
public function getAll() {
return $this->members;
}
public function findById(MemberId $memberId) {
if (isset($this->members[(string)$memberId])) {
return $this->members[(string)$memberId];
}
}
}
class RedisMemberRepository implements MemberRepository {
public function save(Member $member) {
// ...
}
}
Не в сети