Aggregation::setFieldSql()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
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
}