Passed
Push — master ( 0d0803...05a1d5 )
by Jonas
13:32
created

CompilesPostgresExpressions::compileUpdateFrom()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 4
c 0
b 0
f 0
dl 0
loc 7
ccs 5
cts 5
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Staudenmeir\LaravelCte\Query\Grammars\Traits;
4
5
use Illuminate\Database\Query\Builder;
6
use Illuminate\Support\Str;
7
8
trait CompilesPostgresExpressions
9
{
10
    use CompilesExpressions {
11
        compileUpdate as compileUpdateTrait;
12
        compileDelete as compileDeleteTrait;
13
    }
14
15
    /**
16
     * Compile an update statement into SQL.
17
     *
18
     * @param \Illuminate\Database\Query\Builder $query
19
     * @param array $values
20
     * @return string
21
     */
22 7
    public function compileUpdate(Builder $query, array $values)
23
    {
24 7
        if (isset($query->joins) || isset($query->limit)) {
25 4
            return parent::compileUpdate($query, $values);
26
        }
27
28 3
        return $this->compileUpdateTrait($query, $values);
29
    }
30
31
    /**
32
     * Get the bindings for an update statement.
33
     *
34
     * @param \Illuminate\Database\Query\Builder $query
35
     * @param array $bindings
36
     * @param array $values
37
     * @return array
38
     */
39 7
    public function getBindingsForUpdate(Builder $query, array $bindings, array $values)
40
    {
41 7
        if (isset($query->joins) || isset($query->limit)) {
42 4
            return parent::prepareBindingsForUpdate($bindings, $values);
43
        }
44
45 3
        return $this->prepareBindingsForUpdate($bindings, $values);
46
    }
47
48
    /**
49
     * Compile an update from statement into SQL.
50
     *
51
     * @param \Illuminate\Database\Query\Builder $query
52
     * @param array $values
53
     * @return string
54
     */
55 1
    public function compileUpdateFrom(Builder $query, $values)
56
    {
57 1
        $compiled = parent::compileUpdateFrom($query, $values);
58
59 1
        return (string) Str::of($compiled)
60 1
                           ->prepend($this->compileExpressions($query, $query->expressions), ' ')
0 ignored issues
show
Bug introduced by
The property expressions does not seem to exist on Illuminate\Database\Query\Builder.
Loading history...
61 1
                           ->trim();
62
    }
63
64
    /**
65
     * Prepare the bindings for an update statement.
66
     *
67
     * @param array $bindings
68
     * @param array $values
69
     * @return array
70
     */
71 1
    public function prepareBindingsForUpdateFrom(array $bindings, array $values)
72
    {
73 1
        $values = array_merge($bindings['expressions'], $values);
74
75 1
        unset($bindings['expressions']);
76
77 1
        return parent::prepareBindingsForUpdateFrom($bindings, $values);
78
    }
79
80
    /**
81
     * Compile a delete statement into SQL.
82
     *
83
     * @param \Illuminate\Database\Query\Builder $query
84
     * @return string
85
     */
86 6
    public function compileDelete(Builder $query)
87
    {
88 6
        if (isset($query->joins) || isset($query->limit)) {
89 4
            return parent::compileDelete($query);
90
        }
91
92 2
        return $this->compileDeleteTrait($query);
93
    }
94
}
95