/** * Добавить сущьность в базу * * @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; }