InConditionBuilder::buildCompositeInCondition()   B
last analyzed

Complexity

Conditions 6
Paths 12

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 22
ccs 17
cts 17
cp 1
rs 8.9457
c 0
b 0
f 0
cc 6
nc 12
nop 4
crap 6
1
<?php
2
3
/**
4
 * @link http://www.yiiframework.com/
5
 * @copyright Copyright (c) 2008 Yii Software LLC
6
 * @license http://www.yiiframework.com/license/
7
 */
8
9
namespace edgardmessias\db\ibm\db2\conditions;
10
11
/**
12
 * {@inheritdoc}
13
 */
14
class InConditionBuilder extends \yii\db\conditions\InConditionBuilder
15
{
16
    /**
17
     * {@inheritdoc}
18
     */
19 6
    protected function buildCompositeInCondition($operator, $columns, $values, &$params)
20
    {
21 6
        $vss = [];
22 6
        foreach ($values as $value) {
23 6
            $vs = [];
24 6
            foreach ($columns as $column) {
25 6
                if (isset($value[$column])) {
26 6
                    $vs[] = $this->queryBuilder->bindParam($value[$column], $params);
27 6
                } else {
28 1
                    $vs[] = 'NULL';
29
                }
30 6
            }
31 6
            $vss[] = 'select ' . implode(', ', $vs) . ' from SYSIBM.SYSDUMMY1';
32 6
        }
33
34 6
        $sqlColumns = [];
35 6
        foreach ($columns as $i => $column) {
36 6
            $sqlColumns[] = strpos($column, '(') === false ? $this->queryBuilder->db->quoteColumnName($column) : $column;
37 6
        }
38
39 6
        return '(' . implode(', ', $sqlColumns) . ") $operator (" . implode(' UNION ', $vss) . ')';
40
    }
41
}