Aggregation   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 47
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A expression() 0 4 1
A toSQL() 0 3 1
A setFieldSql() 0 4 1
A getField() 0 3 1
A quoteColumn() 0 3 1
A __construct() 0 3 1
1
<?php
2
3
namespace Tsukasa\QueryBuilder\Aggregation;
4
5
use Tsukasa\QueryBuilder\Expression\AbstractExpression;
6
7
abstract class Aggregation extends AbstractExpression
8
{
9
    protected $fields;
10
11
    protected $fieldsSql = '';
12
13
    public function setFieldSql($sql)
14
    {
15
        $this->fieldsSql = $sql;
16
        return $this;
17
    }
18
19
20
    protected function quoteColumn($column)
21
    {
22
        return $this->qb->getAdapter()->quoteColumn($column);
23
    }
24
25
    /**
26
     * @return string
27
     */
28
    abstract protected function expressionTemplate();
29
30
    public function expression()
31
    {
32
        return strtr($this->expressionTemplate(), [
33
            '{field}' => $this->quoteColumn($this->fieldsSql)
34
        ]);
35
    }
36
37
    public function toSQL()
38
    {
39
        return $this->expression();
40
    }
41
42
    public function getField()
43
    {
44
        return $this->fields;
45
    }
46
47
    /**
48
     * Aggregation constructor.
49
     * @param string $field
50
     */
51
    public function __construct($field)
52
    {
53
        $this->fields = $field;
54
    }
55
}