/** * Performs 'findAndModify' query and returns a single row of result. * Warning: in case 'new' option is set to 'false' (which is by default) usage of this method may lead * to unexpected behavior at some Active Record features, because object will be populated by outdated data. * @param array $update update criteria * @param array $options list of options in format: optionName => optionValue. * @param Connection $db the Mongo connection used to execute the query. * @return ActiveRecord|array|null the original document, or the modified document when $options['new'] is set. * Depending on the setting of [[asArray]], the query result may be either an array or an ActiveRecord object. * Null will be returned if the query results in nothing. */ public function modify($update, $options = [], $db = null) { $row = parent::modify($update, $options, $db); if ($row !== null) { $models = $this->populate([$row]); return reset($models) ?: null; } else { return null; } }