Completed
Push — master ( a49fb0...9d47fe )
by Edgard
32:03
created

InConditionBuilder   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 3
dl 0
loc 28
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B buildCompositeInCondition() 0 22 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
}