public function run()
 {
     echo 'Massive Run for samples';
     $biobanks = Biobank::model()->findAll();
     foreach ($biobanks as $biobank) {
         $modifier = new EMongoModifier();
         $modifier->addModifier('biobank_id', 'set', (string) $biobank->_id);
         $criteria = new EMongoCriteria();
         $criteria->biobank_id = $biobank->id;
         $status = Sample::model()->updateAll($modifier, $criteria);
         $criteriaAfter = new EMongoCriteria();
         $criteriaAfter->biobank_id = (string) $biobank->_id;
         $count = Sample::model()->count($criteriaAfter);
         echo "Done for biobank {$biobank->_id} - {$biobank->name} : {$count}\n";
     }
 }
示例#2
0
 /**
  * Add a new set of modifiers to current modifiers. If modifiers has already been
  * added for specific field, they will be overwritten.
  *
  * @param EMongoModifier $modifier modifier to merge into current object
  * @return EMongoModifier
  */
 public function mergeWith($modifier)
 {
     if (is_array($modifier)) {
         $modifier = new EMongoModifier($modifier);
     } else {
         if (empty($modifier)) {
             return $this;
         }
     }
     foreach ($modifier->getFields() as $fieldName => $rule) {
         $this->_fields[$fieldName] = $rule;
     }
     return $this;
 }
示例#3
0
 /**
  * Atomic, in-place update method.
  *
  * @since v1.3.6
  * @param EMongoModifier $modifier updating rules to apply
  * @param EMongoCriteria $criteria condition to limit updating rules
  * @return bool
  */
 public function updateAll($modifier, $criteria = null)
 {
     Yii::trace(get_class($this) . '.updateAll()', 'ext.MongoDb.EMongoDocument');
     if ($modifier->canApply === true) {
         $this->applyScopes($criteria);
         if (version_compare(Mongo::VERSION, '1.0.5', '>=') === true) {
             $result = $this->getCollection()->update($criteria->getConditions(), $modifier->getModifiers(), array('fsync' => $this->getFsyncFlag(), 'safe' => $this->getSafeFlag(), 'upsert' => false, 'multiple' => true));
         } else {
             $result = $this->getCollection()->update($criteria->getConditions(), $modifier->getModifiers(), array('upsert' => false, 'multiple' => true));
         }
         return $result;
     } else {
         return false;
     }
 }