コード例 #1
0
ファイル: File.php プロジェクト: serebro/reach-mongo
 public static function findOne($query = [], array $fields = [], $as_array = false)
 {
     $pk = static::getPrimaryKey();
     $query = Criteria::normalize($query, $pk);
     $gridFSFile = static::getCollection()->findOne($query, $fields);
     $model = static::instantiate($gridFSFile->file);
     $model->gridFSFile = $gridFSFile;
     return $model;
 }
コード例 #2
0
ファイル: Query.php プロジェクト: serebro/reach-mongo
 public function __construct($criteria = null, $hydrate_class, $connection_name = null)
 {
     if (empty($hydrate_class)) {
         throw new Exception('Invalid parameter type.');
     }
     $this->_hydrate_class = $hydrate_class;
     $this->_connection_name = $connection_name;
     parent::__construct($criteria);
 }
コード例 #3
0
ファイル: Collection.php プロジェクト: serebro/reach-mongo
 /**
  * @param mixed $query
  * @param array $fields
  * @param bool  $as_array
  * @return null|self
  */
 public function findOne($query = null, array $fields = [], $as_array = false)
 {
     $class = $this->hydrate_class;
     $pk = $class::getPrimaryKey();
     $query = Criteria::normalize($query, $pk);
     // try to use identity map
     if (count($query) === 1 && array_key_exists($pk, $query)) {
         $id = $query[$pk];
         if ($model = $this->getIdentityMap($id)) {
             if ($as_array) {
                 return $model->getAttributes();
             } else {
                 return $model;
             }
         }
     }
     $this->_connection->logging();
     if ($document = $this->_mongoCollection->findOne($query, $fields)) {
         if ($as_array) {
             return $document;
         }
         /** @var DocumentInterface $model */
         $model = $class::instantiate($document);
         $model->setIsNew(false);
         $model->afterFind($document);
         return $model;
     }
     return null;
 }