Alexey Mezenin

Used local scope

...@@ -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