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がスッキリするのではと思いました。
※「もっと良さそうな書き方があるよ」って方は教えてください。