Example #1
0
 /**
  * Build between query by two search fields
  * @param ActiveQuery $query     Query object
  * @param mixed       $field     Field name: string || array
  * @param string      $format    Format name
  * @param string      $to_suffix To field suffix
  */
 public function addRangeCondition($query, $field = 'timestamp', $format = 'timestamp', $to_suffix = '_to')
 {
     $model = $this->owner;
     $search = $field;
     if (is_array($field)) {
         $search = key($field);
         $field = reset($field);
     }
     if ($model->{$search}) {
         $query->andWhere(['>=', $field, $this->formatField($model->{$search}, $format)]);
     }
     $search_to = $search . $to_suffix;
     if ($model->{$search_to}) {
         $to = $this->formatField($model->{$search_to}, $format);
         if ($format == 'timestamp') {
             $to += SECONDS_IN_DAY - 1;
         }
         $query->andWhere(['<=', $field, $to]);
     }
 }
 public function byCluster($cluster)
 {
     return parent::andWhere(['cluster' => $cluster]);
 }
 /**
  * @param ActiveQuery $query
  * @param array|string $flags
  * @param bool $prefixTablename
  * @return ActiveQuery
  */
 public function addFlagsCriteria($query, $flags, $prefixTablename = false)
 {
     if (!is_array($flags)) {
         $flags = [$flags];
     }
     $trueFlags = [];
     $falseFlags = [];
     $table = $prefixTablename ? $this->owner->tableName() . '.' : '';
     $class = (new \ReflectionClass($this->owner))->getShortName();
     foreach ($flags as $key => $value) {
         if (isset($this->attributes[$key]) && (bool) $value === false) {
             $falseFlags[] = $this->attributes[$key];
         } else {
             if (isset($this->attributes[$key])) {
                 $trueFlags[] = $this->attributes[$key];
             } else {
                 $trueFlags[] = $this->attributes[$value];
             }
         }
     }
     if (!empty($trueFlags)) {
         $tvalue = $this->mergeFlags($trueFlags);
         $query->andWhere($table . "[[{$this->flagsAttribute}]] & :tvalue{$class}", [":tvalue{$class}" => $tvalue]);
     }
     if (!empty($falseFlags)) {
         $fvalue = $this->mergeFlags($falseFlags);
         $query->andWhere('!(' . $table . "[[{$this->flagsAttribute}]] & :fvalue{$class})", [":fvalue{$class}" => $fvalue]);
     }
     return $query;
 }