Conditions | 3 |
Paths | 3 |
Total Lines | 21 |
Code Lines | 16 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | <?php |
||
10 | public function scopeAutoSort(Builder $query, $sortByKey = 'sort', $sortDirectionKey = 'direction') |
||
11 | { |
||
12 | $direction = request()->get($sortDirectionKey, 'asc'); |
||
13 | |||
14 | if (request()->has($sortByKey)) { |
||
15 | $column = request()->get($sortByKey); |
||
16 | if (Str::contains($column, '.')) { |
||
17 | $temp = explode('.', $column); |
||
18 | $relation = $this->{$temp[0]}(); |
||
19 | $related = $relation->getRelated(); |
||
20 | $table = $related->getTable(); |
||
21 | $column = $temp[1]; |
||
22 | |||
23 | $foreignKey = $relation->getQualifiedForeignKeyName(); |
||
24 | $ownerKey = $relation->getQualifiedOwnerKeyName(); |
||
25 | |||
26 | $query->select($this->getTable().'.*'); |
||
|
|||
27 | $query->join($table, $foreignKey, '=', $ownerKey); |
||
28 | $query->orderBy($table.'.'.$column, $direction); |
||
29 | } else { |
||
30 | $query->orderBy($column, $direction); |
||
31 | } |
||
35 |