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