Passed
Push — master ( 6ed66a...c3d33f )
by Jonas
06:02
created

MySqlGrammar::getRecursivePathBindings()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 0
cp 0
rs 10
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Staudenmeir\LaravelAdjacencyList\Query\Grammars;
4
5
use Illuminate\Database\Query\Builder;
6
use Illuminate\Database\Query\Grammars\MySqlGrammar as Base;
7
8
class MySqlGrammar extends Base implements ExpressionGrammar
9
{
10
    /**
11
     * Compile an initial path.
12
     *
13
     * @param string $column
14
     * @param string $alias
15
     * @return string
16 34
     */
17
    public function compileInitialPath($column, $alias)
18 34
    {
19
        return 'cast('.$this->wrap($column).' as char(65535)) as '.$this->wrap($alias);
20
    }
21
22
    /**
23
     * Compile a recursive path.
24
     *
25
     * @param string $column
26
     * @param string $alias
27
     * @return string
28
     */
29 34
    public function compileRecursivePath($column, $alias)
30
    {
31 34
        return 'concat('.$this->wrap($alias).', ?, '.$this->wrap($column).')';
32
    }
33
34
    /**
35
     * Get the recursive path bindings.
36
     *
37
     * @param string $separator
38
     * @return array
39
     */
40
    public function getRecursivePathBindings($separator)
41
    {
42
        return [$separator];
43
    }
44
45
    /**
46
     * Select a concatenated list of paths.
47
     *
48
     * @param \Illuminate\Database\Query\Builder $query
49
     * @param string $expression
50
     * @param string $column
51
     * @param string $pathSeparator
52
     * @param string $listSeparator
53
     * @return \Illuminate\Database\Query\Builder
54
     */
55
    public function selectPathList(Builder $query, $expression, $column, $pathSeparator, $listSeparator)
56
    {
57
        return $query->selectRaw(
58
            'group_concat('.$this->wrap($column)." separator '$listSeparator')"
59
        )->from($expression);
60
    }
61
}
62