Completed
Push — 1.0 ( b7886a...4c0b42 )
by Peter
07:48 queued 11s
created

Values::transform()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
c 0
b 0
f 0
rs 9.8666
cc 2
nc 2
nop 2
1
<?php
2
3
namespace Happyr\DoctrineSpecification\Operand;
4
5
use Doctrine\ORM\QueryBuilder;
6
use Happyr\DoctrineSpecification\ValueConverter;
7
8
class Values implements Operand
9
{
10
    /**
11
     * @var array
12
     */
13
    private $values;
14
15
    /**
16
     * @var int|string|null
17
     */
18
    private $valueType;
19
20
    /**
21
     * @param array           $values
22
     * @param int|string|null $valueType PDO::PARAM_* or \Doctrine\DBAL\Types\Type::* constant
23
     */
24
    public function __construct($values, $valueType = null)
25
    {
26
        $this->values = $values;
27
        $this->valueType = $valueType;
28
    }
29
30
    /**
31
     * @param QueryBuilder $qb
32
     * @param string       $dqlAlias
33
     *
34
     * @return string
35
     */
36
    public function transform(QueryBuilder $qb, $dqlAlias)
37
    {
38
        $values = $this->values;
39
        foreach ($values as $k => $v) {
40
            $values[$k] = ValueConverter::convertToDatabaseValue($v, $qb);
41
        }
42
43
        $paramName = sprintf('comparison_%d', $qb->getParameters()->count());
44
        $qb->setParameter($paramName, $values, $this->valueType);
45
46
        return sprintf(':%s', $paramName);
47
    }
48
}
49