Passed
Push — master ( 0a943e...cf7103 )
by Zing
03:53
created

QueryBuilder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
eloc 14
c 2
b 0
f 0
dl 0
loc 32
ccs 12
cts 12
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A fromBuilder() 0 7 2
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: zing
5
 * Date: 2018/12/26
6
 * Time: 7:14 PM.
7
 */
8
9
namespace Zing\QueryBuilder;
10
11
use Illuminate\Database\Eloquent\Builder;
12
use Illuminate\Http\Request;
13
use Zing\QueryBuilder\Concerns\WithFilters;
14
use Zing\QueryBuilder\Concerns\WithSearchable;
15
use Zing\QueryBuilder\Concerns\WithSorts;
16
17
class QueryBuilder extends Builder
18
{
19
    use WithFilters;
20
    use WithSearchable;
21
    use WithSorts;
22
23
    /** @var \Illuminate\Http\Request */
24
    protected $request;
25
26 16
    public function __construct(Builder $builder, $request)
27
    {
28 16
        parent::__construct($builder->getQuery());
29 16
        $this->setModel($builder->getModel())->setEagerLoads($builder->getEagerLoads());
30 16
        $this->scopes = $builder->scopes;
31 16
        $this->localMacros = $builder->localMacros;
32 16
        $this->onDelete = $builder->onDelete;
33 16
        $this->request = $request;
34 16
    }
35
36
    /**
37
     * @param Builder|string $baseQuery
38
     * @param \Illuminate\Http\Request $request
39
     *
40
     * @return \Zing\QueryBuilder\QueryBuilder
41
     */
42 16
    public static function fromBuilder($baseQuery, Request $request)
43
    {
44 16
        if (is_string($baseQuery)) {
45 16
            $baseQuery = $baseQuery::query();
46
        }
47
48 16
        return new static($baseQuery, $request);
49
    }
50
}
51