Ejemplo n.º 1
0
 /**
  * Process array condition
  *
  * @param AbstractArrayOperatorNode $node Query node
  * @return AbstractArrayOperatorNode
  */
 private function processArrayNode(AbstractArrayOperatorNode $node)
 {
     $copy = clone $node;
     $copy->setValues(array_map([$this, 'getDbRefValue'], $node->getValues()));
     return $copy;
 }
Ejemplo n.º 2
0
 /**
  * Make string with conditions for ArrayOperatorNode
  *
  * @param AbstractArrayOperatorNode $node
  * @return string
  */
 public function makeArrayOperator(AbstractArrayOperatorNode $node)
 {
     $nodeName = $node->getNodeName();
     if (!isset($this->literals['ArrayOperator'][$nodeName])) {
         throw new DataStoresException('The Array Operator not suppoted: ' . $nodeName);
     }
     $arrayValues = $node->getValues();
     $strQuery = $this->literals['ArrayOperator'][$nodeName]['before'];
     foreach ($arrayValues as $value) {
         /* @var $queryNode AbstractQueryNode */
         $strQuery = $strQuery . $this->prepareFildValue($value) . $this->literals['ArrayOperator'][$nodeName]['between'];
     }
     $strQuery = rtrim($strQuery, $this->literals['ArrayOperator'][$nodeName]['between']);
     $strQuery = $strQuery . $this->literals['ArrayOperator'][$nodeName]['after'];
     return $strQuery;
 }
Ejemplo n.º 3
0
 private function visitArrayNode(Node\Query\AbstractArrayOperatorNode $node, SqlBuilder $sqlBuilder)
 {
     static $operators = ['in' => 'IN', 'out' => 'NOT IN'];
     if (!isset($operators[$node->getNodeName()])) {
         throw new \LogicException(sprintf('Unknown array node "%s"', $node->getNodeName()));
     }
     $sqlBuilder->addWhereCondition($node->getField(), $node->getValues(), $operators[$node->getNodeName()]);
 }