DynamicScope   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 24
rs 10
wmc 7

1 Method

Rating   Name   Duplication   Size   Complexity  
B apply() 0 20 7
1
<?php
2
3
namespace Halalsoft\LaravelDynamicColumn;
4
5
use DB;
6
use Illuminate\Database\Eloquent\Builder;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Database\Eloquent\Scope;
9
10
class DynamicScope implements Scope
11
{
12
13
14
    public function apply(Builder $builder, Model $model)
15
    {
16
        $dynamicColumns = (array) $model->getDynamicColumns();
17
        if (empty($builder->getQuery()->columns)) {
18
            foreach ($dynamicColumns as $column) {
19
                $builder = $builder->select(['*'])->addSelect(DB::raw("COLUMN_JSON($column) as $column"));
20
            }
21
        } elseif (in_array('*', $builder->getQuery()->columns)) {
22
            foreach ($dynamicColumns as $column) {
23
                $builder = $builder->addSelect(DB::raw("COLUMN_JSON($column) as $column"));
24
            }
25
        } else {
26
            foreach ($builder->getQuery()->columns as $column) {
27
                if (in_array($column, $dynamicColumns)) {
28
                    $builder = $builder->addSelect(DB::raw("COLUMN_JSON($column) as $column"));
29
                }
30
            }
31
        }
32
33
        return $builder;
34
    }
35
}