Yii comment utiliser le modèle de mise à jour, même si l'enregistrement est nouveau

J'ai un système qui est très important pour être au plus près en temps réel que possible.
Pour cette raison, quand je suis à l'extraction de données à partir d'une source externe je veux utiliser $model->mise à jour au lieu de l'exécuter 2 requêtes :

$model->find()
if(new)
    $model->save
else
    $model->update

C'est trop de temps...puis-je utiliser $model->mise à jour et si l'enregistrement est nouveau, il sera tout simplement le créer?

J'ai regardé le code de mise à jour, mais je ne suis pas sûr de savoir comment le remplacer.

public function update($attributes=null)
{
    if($this->getIsNewRecord())
        throw new CDbException(Yii::t('yii','The active record cannot be updated because it is new.'));
    if($this->beforeSave())
    {
        Yii::trace(get_class($this).'.update()','system.db.ar.CActiveRecord');
        if($this->_pk===null)
            $this->_pk=$this->getPrimaryKey();
        $this->updateByPk($this->getOldPrimaryKey(),$this->getAttributes($attributes));
        $this->_pk=$this->getPrimaryKey();
        $this->afterSave();
        return true;
    }
    else
        return false;
}
  • Trop de temps? Pourquoi? Où est exactement le temps d'être consommé?
  • Il n'est pas possible de faire tout le CRUD états "combiné" ou sans la nécessité de l'autre. Vous ne pouvez pas dire à la base de données Make a new record in the table by updating a not existing one. Vous ne pouvez pas mélanger INSERT INTO <table> avec UPDATE <table> WHERE. Vous êtes lié par les limites de la base de données classique, les langages de requête. MAIS: comme indiqué dans la réponse ci-dessous http://stackoverflow.com/a/16336521/431967 il vous suffit de faire $model->save().