/** * Строит запрос для группы выражений * @param IExpressionGroup $exprGroup * @return string */ private function buildExpressionGroup(IExpressionGroup $exprGroup) { $result = []; foreach ($exprGroup->getExpressions() as $expression) { list($leftCond, $operator, $rightCond) = $expression; $leftCond = $this->protectExpressionValue($leftCond); $rightCond = $this->protectExpressionValue($rightCond); $result[] = $leftCond . ' ' . $operator . ' ' . $rightCond; } foreach ($exprGroup->getGroups() as $subGroup) { $result[] = '(' . $this->buildExpressionGroup($subGroup) . ')'; } if (!count($result)) { return '1'; // WHERE 1, if no expressions } return implode(' ' . $exprGroup->getMode() . ' ', $result); }