Showing
2 changed files
with
10 additions
and
9 deletions
... | @@ -43,15 +43,9 @@ class Article extends Model | ... | @@ -43,15 +43,9 @@ class Article extends Model |
43 | 43 | ||
44 | public function getFiltered(array $filters): Collection | 44 | public function getFiltered(array $filters): Collection |
45 | { | 45 | { |
46 | - return $this->when(array_key_exists('tag', $filters), function ($q) use ($filters) { | 46 | + return $this->filter($filters, 'tag', 'tags', 'name') |
47 | - $q->whereRelation('tags', 'name', $filters['tag']); | 47 | + ->filter($filters, 'author', 'user', 'username') |
48 | - }) | 48 | + ->filter($filters, 'favorited', 'users', 'username') |
49 | - ->when(array_key_exists('author', $filters), function ($q) use ($filters) { | ||
50 | - $q->whereRelation('user', 'username', $filters['author']); | ||
51 | - }) | ||
52 | - ->when(array_key_exists('favorited', $filters), function ($q) use ($filters) { | ||
53 | - $q->whereRelation('users', 'username', $filters['favorited']); | ||
54 | - }) | ||
55 | ->when(array_key_exists('offset', $filters), function ($q) use ($filters) { | 49 | ->when(array_key_exists('offset', $filters), function ($q) use ($filters) { |
56 | $q->offset($filters['offset'])->limit($filters['limit']); | 50 | $q->offset($filters['offset'])->limit($filters['limit']); |
57 | }) | 51 | }) |
... | @@ -59,6 +53,13 @@ class Article extends Model | ... | @@ -59,6 +53,13 @@ class Article extends Model |
59 | ->get(); | 53 | ->get(); |
60 | } | 54 | } |
61 | 55 | ||
56 | + public function scopeFilter($query, array $filters, string $key, string $relation, string $column) | ||
57 | + { | ||
58 | + return $query->when(array_key_exists($key, $filters), function ($q) use ($filters, $relation, $column, $key) { | ||
59 | + $q->whereRelation($relation, $column, $filters[$key]); | ||
60 | + }); | ||
61 | + } | ||
62 | + | ||
62 | public function setTitleAttribute(string $title): void | 63 | public function setTitleAttribute(string $title): void |
63 | { | 64 | { |
64 | $this->attributes['title'] = $title; | 65 | $this->attributes['title'] = $title; | ... | ... |
No preview for this file type
-
Please register or login to post a comment