芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/xmintal-back/vendor/yiisoft/yii2/db/oci/conditions/InConditionBuilder.php
splitCondition($expression, $params); if ($splitCondition !== null) { return $splitCondition; } return parent::build($expression, $params); } /** * Oracle DBMS does not support more than 1000 parameters in `IN` condition. * This method splits long `IN` condition into series of smaller ones. * * @param ExpressionInterface|InCondition $condition the expression to be built. * @param array $params the binding parameters. * @return string|null null when split is not required. Otherwise - built SQL condition. */ protected function splitCondition(InCondition $condition, &$params) { $operator = $condition->getOperator(); $values = $condition->getValues(); $column = $condition->getColumn(); if ($values instanceof \Traversable) { $values = iterator_to_array($values); } if (!is_array($values)) { return null; } $maxParameters = 1000; $count = count($values); if ($count <= $maxParameters) { return null; } $slices = []; for ($i = 0; $i < $count; $i += $maxParameters) { $slices[] = $this->queryBuilder->createConditionFromArray([$operator, $column, array_slice($values, $i, $maxParameters)]); } array_unshift($slices, ($operator === 'IN') ? 'OR' : 'AND'); return $this->queryBuilder->buildCondition($slices, $params); } }