Doctrine\DBAL\Query\Expression\CompositeExpression::add PHP Метод

add() публичный Метод

Adds an expression to composite expression.
public add ( mixed $part ) : CompositeExpression
$part mixed
Результат CompositeExpression
    public function add($part)
    {
        if (!empty($part) || $part instanceof self && $part->count() > 0) {
            $this->parts[] = $part;
        }
        return $this;
    }

Usage Example

Пример #1
0
 /**
  * Taken from https://gist.github.com/jgornick/8671644
  *
  * Recursively takes the specified criteria and adds too the expression.
  *
  * The criteria is defined in an array notation where each item in the list
  * represents a comparison <fieldName, operator, value>. The operator maps to
  * comparison methods located in ExpressionBuilder. The key in the array can
  * be used to identify grouping of comparisons.
  *
  * @example
  * $criteria = array(
  *      'or' => array(
  *          array('field1', 'like', '%field1Value%'),
  *          array('field2', 'like', '%field2Value%')
  *      ),
  *      'and' => array(
  *          array('field3', 'eq', 3),
  *          array('field4', 'eq', 'four')
  *      ),
  *      array('field5', 'neq', 5)
  * );
  *
  * $qb = new QueryBuilder();
  * addCriteria($qb, $qb->expr()->andX(), $criteria);
  * echo $qb->getSQL();
  *
  * // Result:
  * // SELECT *
  * // FROM tableName
  * // WHERE ((field1 LIKE '%field1Value%') OR (field2 LIKE '%field2Value%'))
  * // AND ((field3 = '3') AND (field4 = 'four'))
  * // AND (field5 <> '5')
  *
  * @param QueryBuilder $qb
  * @param CompositeExpression $expr
  * @param array $criteria
  */
 static function addCriteria(QueryBuilder $qb, $expr, array $criteria)
 {
     if (count($criteria)) {
         //            var_dump($criteria);
         foreach ($criteria as $element) {
             foreach ($element as $expression => $comparison) {
                 if (!is_array($comparison)) {
                     $comparison = $element;
                 }
                 if ($expression > 0) {
                     continue;
                 }
                 //                    echo
                 //                        "Elem:".((is_array($element))?print_r($element,true):$element).'--'.
                 //                        "Expr:".((is_array($expression))?print_r($expression,true):$expression).'--'.
                 //                        "Comp:".((is_array($comparison))?print_r($comparison,true):$comparison).'--'.
                 //                        "<br>";
                 //break;
                 //                    echo "<br><br>";
                 //                    echo($expression);
                 //                    echo(print_r($comparison,true));
                 //                    if ($comparison)
                 if ($expression === 'or') {
                     $expr->add(Doctrine::addCriteria($qb, $qb->expr()->orX(), $comparison));
                 } else {
                     if ($expression === 'and') {
                         $expr->add(Doctrine::addCriteria($qb, $qb->expr()->andX(), $comparison));
                     } else {
                         //                        print_r($comparison);
                         if (count($comparison) == 3) {
                             list($field, $operator, $value) = $comparison;
                         } elseif (count($comparison) == 2) {
                             list($field, $operator) = $comparison;
                         }
                         if ($operator == 'in') {
                             $expr->add($qb->expr()->{$operator}($field, $value));
                         } elseif (in_array($operator, ['isNull', 'isNotNull'])) {
                             $expr->add($qb->expr()->{$operator}($field));
                         } else {
                             $expr->add($qb->expr()->{$operator}($field, $qb->expr()->literal($value)));
                         }
                     }
                 }
             }
             //                echo $qb->getDql()."<br><br>";
         }
     }
     return $expr;
 }
All Usage Examples Of Doctrine\DBAL\Query\Expression\CompositeExpression::add