Esempio n. 1
0
 /**
  * Map to database column.
  * @param string $column
  * @param string $operator
  * @return Filter
  * @throws Exception
  */
 public function setColumn($column, $operator = Condition::OPERATOR_OR)
 {
     $columnAlreadySet = count($this->column) > 0;
     if (!Condition::isOperator($operator) && $columnAlreadySet) {
         throw new Exception('Operator must be Condition::OPERATOR_AND or Condition::OPERATOR_OR.');
     }
     if ($columnAlreadySet) {
         $this->column[] = $operator;
         $this->column[] = $column;
     } else {
         $this->column[] = $column;
     }
     return $this;
 }
Esempio n. 2
0
File: Filter.php Progetto: o5/grido
 /**
  * Map to database column.
  * @param string $column
  * @param string $operator
  * @return Filter
  * @throws Exception
  */
 public function setColumn($column, $operator = Condition::OPERATOR_OR)
 {
     $columnAlreadySet = count($this->column) > 0;
     if (!Condition::isOperator($operator) && $columnAlreadySet) {
         $msg = sprintf("Operator must be '%s' or '%s'.", Condition::OPERATOR_AND, Condition::OPERATOR_OR);
         throw new Exception($msg);
     }
     if ($columnAlreadySet) {
         $this->column[] = $operator;
         $this->column[] = $column;
     } else {
         $this->column[] = $column;
     }
     return $this;
 }
Esempio n. 3
0
 /**
  * @param Condition $condition
  * @param array $data
  * @return array
  */
 protected function makeWhere(Condition $condition, array $data = NULL)
 {
     $data = $data === NULL ? $this->data : $data;
     return array_filter($data, function ($row) use($condition) {
         if ($condition->callback) {
             return call_user_func_array($condition->callback, [$condition->value, $row]);
         }
         $i = 0;
         $results = [];
         foreach ($condition->column as $column) {
             if (Condition::isOperator($column)) {
                 $results[] = " {$column} ";
             } else {
                 $i = count($condition->condition) > 1 ? $i : 0;
                 $results[] = (int) $this->compare($row[$column], $condition->condition[$i], isset($condition->value[$i]) ? $condition->value[$i] : NULL);
                 $i++;
             }
         }
         $result = implode('', $results);
         return count($condition->column) === 1 ? (bool) $result : eval("return {$result};");
     });
 }
Esempio n. 4
0
 /**
  * @param Condition $condition
  * @param \Doctrine\ORM\QueryBuilder $qb
  */
 protected function makeWhere(Condition $condition, \Doctrine\ORM\QueryBuilder $qb = NULL)
 {
     $qb = $qb === NULL ? $this->qb : $qb;
     if ($condition->callback) {
         return callback($condition->callback)->invokeArgs(array($condition->value, $qb));
     }
     $columns = $condition->column;
     foreach ($columns as $key => $column) {
         if (!Condition::isOperator($column)) {
             $columns[$key] = isset($this->filterMapping[$column]) ? $this->filterMapping[$column] : (Strings::contains($column, ".") ? $column : current($this->qb->getRootAliases()) . '.' . $column);
         }
     }
     $condition->setColumn($columns);
     list($where) = $condition->__toArray(NULL, NULL, FALSE);
     $rand = $this->getRand();
     $where = preg_replace_callback('/\\?/', function () use($rand) {
         static $i = -1;
         $i++;
         return ":{$rand}{$i}";
     }, $where);
     $qb->andWhere($where);
     foreach ($condition->getValueForColumn() as $i => $val) {
         $qb->setParameter("{$rand}{$i}", $val);
     }
 }