laravelでのrepositoryの良さげな書き方を紹介します。
class UserRepository implements UserInterface { protected $user; public function __construct(User $user) { $this->user = $user; } protected function byFilter(array $filter){ if (array_key_exists('name', $filter)){ $data->where('name', $filter['name']); }; if (array_key_exists('email', $filter)){ $data->where('email', $filter['email']); }; if (array_key_exists('point', $filter)){ $data->where('point', $filter['point']); }; if (array_key_exists('role', $filter)){ $data->where('role', $filter['role']); }; return $data; } public function sumPointByFilter(array $filter = []) { $data = $this->byFilter($filter); $data = $data->sum('point'); return $data; } public function existsByFilter(array $filter = []) { $data = $this->byFilter($filter); $data = $data->exists(); return $data; } public function getByFilter(array $filter = []) { $data = $this->byFilter($filter); $data = $data->get(); return $data; } }
こうすればgetBy***みたいのを都度書く必要が無くなりRepositoryがスッキリするのではと思いました。
※「もっと良さそうな書き方があるよ」って方は教えてください。