Exemple #1
0
 /**
  * Format the predicate object by grouping nested predicates and parameters.
  *
  * @param \Titon\Db\Query\Predicate $predicate
  * @return string
  */
 public function formatPredicate(Predicate $predicate)
 {
     $output = [];
     foreach ($predicate->getParams() as $param) {
         if ($param instanceof Predicate) {
             $output[] = sprintf($this->getClause(self::GROUP), $this->formatPredicate($param));
         } else {
             if ($param instanceof Expr) {
                 $output[] = $this->formatExpression($param);
             }
         }
     }
     return implode(' ' . $this->getKeyword($predicate->getType()) . ' ', $output);
 }
Exemple #2
0
 /**
  * Modify a predicate by adding additional clauses.
  *
  * @param \Titon\Db\Query\Predicate $predicate
  * @param int $type
  * @param string $field
  * @param mixed $op
  * @param mixed $value
  * @return $this
  * @throws \Titon\Db\Exception\ExistingPredicateException
  */
 protected function _modifyPredicate(&$predicate, $type, $field, $op, $value)
 {
     if (!$predicate) {
         $predicate = new Predicate($type);
     } else {
         if ($predicate->getType() !== $type) {
             throw new ExistingPredicateException(sprintf('Predicate clause already created using "%s" conjunction', $predicate->getType()));
         }
     }
     if ($field instanceof Closure) {
         $predicate->bindCallback($field, $this);
     } else {
         if ($value !== null || in_array($op, [Expr::NULL, Expr::NOT_NULL], true)) {
             $predicate->add($field, $op, $value);
         } else {
             if ($op === '!=') {
                 $predicate->notEq($field, $value);
             } else {
                 $predicate->eq($field, $op);
             }
         }
     }
     return $this;
 }
Exemple #3
0
 public function testGetType()
 {
     $this->assertEquals(Predicate::ALSO, $this->object->getType());
     $pred = new Predicate(Predicate::MAYBE);
     $this->assertEquals(Predicate::MAYBE, $pred->getType());
 }