Nextras\Orm\Collection\Helpers\ConditionParserHelper::parseCondition PHP Метод

parseCondition() публичный статический Метод

public static parseCondition ( $condition )
    public static function parseCondition($condition)
    {
        if (!preg_match('#^([\\w\\\\]+(?:->\\w+)*)(!|!=|<=|>=|=|>|<)?$#', $condition, $matches)) {
            throw new InvalidArgumentException('Unsupported condition format.');
        }
        $source = null;
        $tokens = explode('->', $matches[1]);
        if (count($tokens) > 1) {
            $source = array_shift($tokens);
            $source = $source === 'this' ? null : $source;
        }
        return [$tokens, isset($matches[2]) ? $matches[2] === '!' ? '!=' : $matches[2] : '=', $source];
    }

Usage Example

Пример #1
0
 /**
  * Transforms orm order by expression and adds it to QueryBuilder.
  * @param  string       $expression
  * @param  string       $direction
  * @param  QueryBuilder $builder
  */
 public function processOrderByExpression($expression, $direction, QueryBuilder $builder)
 {
     list($chain, , $sourceEntity) = ConditionParserHelper::parseCondition($expression);
     $sqlExpression = $this->normalizeAndAddJoins($chain, $sourceEntity, $builder, $distinctNeeded);
     $builder->addOrderBy($sqlExpression . ($direction === ICollection::DESC ? ' DESC' : ''));
     if ($distinctNeeded) {
         throw new LogicException("Cannot order by '{$expression}' expression, includes has many relationship.");
     }
 }
All Usage Examples Of Nextras\Orm\Collection\Helpers\ConditionParserHelper::parseCondition
ConditionParserHelper