/** * @see CActiveDataProvider::setCriteria() * @param array|EMongoCriteria $value */ public function setCriteria($value) { if ($value instanceof EMongoCriteria) { $this->_criteria = $value->toArray(); } if (is_array($value)) { $this->_criteria = $value; } }
/** * Merges either an array of criteria or another criteria object with this one * @param array|EMongoCriteria $criteria * @return EMongoCriteria */ public function mergeWith($criteria) { if ($criteria instanceof EMongoCriteria) { return $this->mergeWith($criteria->toArray()); } if (is_array($criteria)) { if (isset($criteria['condition']) && is_array($criteria['condition'])) { $this->setCondition(CMap::mergeArray($this->condition, $criteria['condition'])); } if (isset($criteria['sort']) && is_array($criteria['sort'])) { $this->setSort(CMap::mergeArray($this->sort, $criteria['sort'])); } if (isset($criteria['skip']) && is_numeric($criteria['skip'])) { $this->setSkip($criteria['skip']); } if (isset($criteria['limit']) && is_numeric($criteria['limit'])) { $this->setLimit($criteria['limit']); } if (isset($criteria['project']) && is_array($criteria['project'])) { $this->setProject(CMap::mergeArray($this->project, $criteria['project'])); } } return $this; }