/** * Make string with conditions for LogicOperatorNode * * @param AbstractLogicOperatorNode $node * @return string */ public function makeLogicOperator(AbstractLogicOperatorNode $node) { $nodeName = $node->getNodeName(); if (!isset($this->literals['LogicOperator'][$nodeName])) { throw new DataStoresException('The Logic Operator not suppoted: ' . $nodeName); } $arrayQueries = $node->getQueries(); $strQuery = $this->literals['LogicOperator'][$nodeName]['before']; foreach ($arrayQueries as $queryNode) { /* @var $queryNode AbstractQueryNode */ $strQuery = $strQuery . $this->makeAbstractQueryOperator($queryNode) . $this->literals['LogicOperator'][$nodeName]['between']; } $strQuery = rtrim($strQuery, $this->literals['LogicOperator'][$nodeName]['between']); $strQuery = $strQuery . $this->literals['LogicOperator'][$nodeName]['after']; return $strQuery; }
/** * add query (like and or or) to the querybuilder * * @param string|boolean $addMethod name of method we will be calling or false if no method is needed * @param AbstractLogicOperatorNode $node AST representation of query operator * @param bool $expr should i wrap this in expr() * * @return Builder|Expr */ protected function visitLogic($addMethod, AbstractLogicOperatorNode $node, $expr = false) { $builder = $this->builder; if ($expr) { $builder = $this->builder->expr(); } foreach ($node->getQueries() as $query) { $expr = $this->recurse($query, $addMethod !== false); if ($addMethod !== false) { $builder->{$addMethod}($expr); } } return $builder; }