/** * 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; }
/** * 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); }