populateRecord() public method

This method is internally used by the find methods. Null is returned if the input data is false.
public populateRecord ( array $attributes, boolean $callAfterFind = true, boolean $partial = false ) : EMongoDocument | null
$attributes array - attribute values (column name=>column value)
$callAfterFind boolean whether to call {@link afterFind} after the record is populated.
$partial boolean
return EMongoDocument | null - the newly created active record. The class of the object is the same as the model class.
Exemplo n.º 1
0
 /**
  * Return the current element
  * @return EMongoDocument
  * @since v1.3.4
  */
 public function current()
 {
     $document = $this->_cursor->current();
     if (empty($document)) {
         return $document;
     }
     return $this->_model->populateRecord($document);
 }
Exemplo n.º 2
0
 /**
  * Gets the active record for the current row
  * @return EMongoDocument|mixed
  * @throws EMongoException
  */
 public function current()
 {
     if (!$this->run) {
         if ($this->model->getDbConnection()->queryCachingCount > 0 && $this->model->getDbConnection()->queryCachingDuration > 0 && $this->model->getDbConnection()->queryCacheID !== false && ($cache = Yii::app()->getComponent($this->model->getDbConnection()->queryCacheID)) !== null) {
             $this->model->getDbConnection()->queryCachingCount--;
             $info = $this->cursor()->info();
             $cacheKey = 'yii:dbquery' . $this->model->getDbConnection()->server . ':' . $this->model->getDbConnection()->db . ':' . $this->model->getDbConnection()->getSerialisedQuery(is_array($info['query']) && isset($info['query']['$query']) ? $info['query']['$query'] : array(), $info['fields'], is_array($info['query']) && isset($info['query']['$orderby']) ? $info['query']['$orderby'] : array(), $info['skip'], $info['limit']) . ':' . $this->model->getCollection();
             if (($result = $cache->get($cacheKey)) !== false) {
                 Yii::trace('Query result found in cache', 'extensions.MongoYii.EMongoDocument');
                 $this->cachedArray = $result;
                 $this->fromCache = true;
             } else {
                 $this->cachedArray = iterator_to_array($this->cursor);
             }
         }
         if (isset($cache, $cacheKey)) {
             $cache->set($cacheKey, $this->cachedArray, $this->model->getDbConnection()->queryCachingDuration, $this->model->getDbConnection()->queryCachingDependency);
             $this->fromCache = true;
         }
         $this->run = true;
     }
     if ($this->model === null) {
         throw new EMongoException(Yii::t('yii', 'The MongoCursor must have a model'));
     }
     if ($this->fromCache) {
         return $this->current = $this->model->populateRecord(current($this->cachedArray), true, $this->partial);
     }
     return $this->current = $this->model->populateRecord($this->cursor()->current(), true, $this->partial);
 }
Exemplo n.º 3
0
 /**
  * Gets the active record for the current row
  * @return EMongoDocument|mixed
  * @throws EMongoException
  */
 public function current()
 {
     if ($this->model === null) {
         throw new EMongoException(Yii::t('yii', 'The MongoCursor must have a model'));
     }
     return $this->current = $this->model->populateRecord($this->cursor()->current(), true, $this->partial);
 }
Exemplo n.º 4
0
 /**
  * Gets the active record for the current row
  * @return EMongoDocument|mixed
  * @throws EMongoException
  */
 public function current()
 {
     if ($this->model === null) {
         return $this->current = $this->cursor->current();
     } else {
         return $this->current = $this->model->populateRecord($this->cursor->current(), true, $this->partial);
     }
 }
Exemplo n.º 5
0
 /**
  * Returns whether there is an element at the specified offset.
  * This method is required by the interface ArrayAccess.
  * @param mixed $offset the offset to check on
  * @return boolean
  */
 public function offsetExists($offset)
 {
     if (!isset($this->_array)) {
         foreach ($this->_cursor as $document) {
             $this->offsetSet(null, $this->_model->populateRecord($document));
         }
     }
     if (isset($this->_array[$offset])) {
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 6
0
 /**
  * Creates an EMongoGridFS with the given attributes.
  * This method is internally used by the find methods.
  * @param MongoGridFSFile $document mongo gridFSFile
  * @param array $attributes attribute values (column name=>column value)
  * @param boolean $callAfterFind whether to call {@link afterFind} after the record is populated.
  * This parameter is added in version 1.0.3.
  * @return EMongoDocument the newly created document. The class of the object is the same as the model class.
  * Null is returned if the input data is false.
  * @since v1.3
  */
 public function populateRecord($document, $callAfterFind = true)
 {
     Yii::trace('Trace: ' . __CLASS__ . '::' . __FUNCTION__ . '()', 'ext.MongoDb.EMongoGridFS');
     if ($document instanceof MongoGridFSFile) {
         $model = parent::populateRecord($document->file, $callAfterFind);
         $model->_gridFSFile = $document;
         return $model;
     } else {
         return parent::populateRecord($document, $callAfterFind);
     }
 }