Пример #1
0
 /**
  * Добавить сущьность в базу
  *
  * @param mixed      $data
  * @param Cond|array|null  $cond
  *
  * @throws Exception\ErrorException
  * @throws \Model\Validator\Exception\InvalidArgumentException
  * @throws \Model\Exception\ErrorException
  * @return Result
  */
 public function update($data, $cond = null)
 {
     if ($data instanceof AbstractCollection) {
         $data = $data->current();
     }
     $data = $this->prepareData($data);
     $result = new Result();
     if (empty($data)) {
         return $result;
     }
     if (!$cond instanceof Cond) {
         if ($cond == null) {
             $cond = $this->prepareCond($cond);
         } elseif (is_array($cond)) {
             $_cond = $this->prepareCond(null);
             $cond = $_cond->where($cond);
         } else {
             throw new Exception\ErrorException('Unknown cond type');
         }
     }
     $data = $this->prepareDataOnUpdate($data, $cond);
     // Если валидация включена
     if ($cond->checkCond(Cond::VALIDATE_ON_UPDATE, true)) {
         $validator = $this->validateOnUpdate($data);
         $result->setValidator($validator);
         // Проверяем данные и если есть ошибки
         // то добавляем их в результат
         if (!$validator->isValid()) {
             return $result;
         }
     }
     try {
         $select = $this->prepareSelect($cond);
         $this->getDb()->update($this->getRawName(), $data, $select);
     } catch (\Exception $ex) {
         $result->setResult(false);
         $result->addError($ex->getMessage(), $ex->getCode());
     }
     return $result;
 }