/** * @param SFM_Entity $eEntity * @throws SFM_Exception * @internal param array $simpleValues * @return string */ public function saveEntity(SFM_Entity $eEntity) { if ($eEntity->isDummy()) { //Saving all fields, not only changed $simpleValues = $eEntity->getTuple(); unset($simpleValues[$this->primaryKey]); $response = $this->dao->insertOne($this->member, $simpleValues); $id = $response[$this->primaryKey]; //Storing entity in Identity Map for future reuse if ($this->useIdentityMap) { $this->storeEntityInIdentityMap($eEntity); } } elseif ($eEntity->isDeleted()) { $this->dao->deleteOne($this->member, array($this->primaryKey => $eEntity->getId())); $id = $eEntity->getId(); } elseif ($eEntity->isDirty()) { //Updating only fields that are dirty $id = $this->dao->updateOne($this->member, $this->primaryKey, $eEntity->getId(), $eEntity->getDiff()); } else { //Do nothing because entity has got id already and isn't dirty $id = $eEntity->getId(); } return $id; }