Completed
Push — master ( f28d10...67914a )
by Vasyl
02:01
created

ScopesTrait   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 10
c 0
b 0
f 0
wmc 8

3 Methods

Rating   Name   Duplication   Size   Complexity  
A scopeByNameByClass() 0 4 2
A scopeByClassesByNames() 0 10 4
A scopeByNamesByClass() 0 4 2
1
<?php
2
3
namespace Fomvasss\SlugMaker\Models;
4
5
trait ScopesTrait
6
{
7
    public function scopeByClassesByNames($query, array $attributes, $key = 'name')
8
    {
9
        foreach ($attributes as $type => $slugs) {
10
            if (! empty($slugs)) {
11
                $names = is_array($slugs) ? $slugs : [$slugs];
12
                $query->orWhere('slugable_type', $type)->whereIn($key, $names);
13
            }
14
        }
15
16
        return $query;
17
    }
18
19
    public function scopeByNameByClass($query, $name, $class = null)
20
    {
21
        $query->where('name', $name);
22
        return $class ? $query->where('slugable_type', $class) : $query;
23
    }
24
25
    public function scopeByNamesByClass($query, $name, $class = null)
26
    {
27
        $query->whereIn('name', $name);
28
        return $class ? $query->where('slugable_type', $class) : $query;
29
    }
30
}
31