Esempio n. 1
0
 /**
  * Function create where mongodb
  * @param object $query
  * @param string $attribute Name attribute in collection
  * @param string|array $values Value of attribute
  * @param string|array $operator Where of attribute and value: like, between, gt, gte, lt, lte, ne, in
  * @return object $query
  */
 public static function addMongoFilter($query, $attribute, $values, $operator = null)
 {
     if (!empty($values) or $values === "0") {
         if ($operator == 'between' and isset($values[1])) {
             $where = [$attribute => ['$gte' => ArrayHelper::getValue($values, 0), '$lte' => ArrayHelper::getValue($values, 1)]];
         } elseif (in_array($operator, ['gt', 'gte', 'lt', 'lte', 'ne', 'in', 'nin'])) {
             $where = [$attribute => ['$' . $operator => $values]];
         } elseif ($operator == 'like') {
             $where = [$attribute => ['$regex' => $values]];
         } else {
             $where = [$attribute => $values];
         }
         return $query->andFilterWhere($where);
     }
     return $query;
 }
Esempio n. 2
0
 /**
  * Ham tao cau dieu kien
  * @param object $query
  * @param string $attribute Ten attribute in collection
  * @param string|array $values Gia tri cua attribute
  * @param string|array $operator Dieu kien cua attribute va value: like, between, gt, gte, lt, lte
  * @return object $query
  */
 public static function addFilter($query, $attribute, $values, $operator = null)
 {
     if ($operator == 'between' and isset($values[1])) {
         $where = [$attribute => ['$gte' => ArrayHelper::getValue($values, 0), '$lte' => ArrayHelper::getValue($values, 1)]];
     } elseif (in_array($operator, ['gt', 'gte', 'lt', 'lte'])) {
         $where = [$attribute => ['$' . $operator => $values]];
     } elseif ($operator == 'like') {
         $where = [$attribute => ['$regex' => $values]];
     } else {
         $where = [$attribute => $values];
     }
     //        if (empty($operator)){// Neu operators rong thi attribute = values
     //            $query->andFilterWhere([
     //                $attribute => $values
     //            ]);
     //        } else if (!is_array($values) && !(is_array($operator))){
     //            $query->andFilterWhere([
     //                $attribute => [
     //                    $operator => $values,
     //                ]
     //            ]);
     //        } else {
     //            // Tao dieu kien theo mang value va operators
     //            $where = [];
     //            foreach ($values as $key => $value) {
     //                $operator = (isset($operators[$key])) ? $operators[$key] : '';
     //                $where[$operator] = $value;
     //            }
     //
     //            $query->andFilterWhere([
     //                $attribute => $where
     //            ]);
     //        }
     return $query->andFilterWhere($where);
 }