public function save()
{
$this->events()->trigger(__CLASS__, 'before.save', $this);
$arraySave = array('document_id' => $this->getDocumentId(), 'property_id' => $this->getPropertyId());
if ($this->getDriverName() == 'pdo_pgsql') {
$arraySave['value'] = pg_escape_bytea($this->getValue());
} else {
$arraySave['value'] = $this->getValue();
}
try {
$id = $this->getId();
if (empty($id)) {
$this->insert($arraySave);
$this->setId($this->getLastInsertId());
} else {
$this->update($arraySave, array('id' => $this->getId()));
}
$this->events()->trigger(__CLASS__, 'after.save', $this);
return $this->getId();
} catch (\Exception $e) {
$this->events()->trigger(__CLASS__, 'after.save.failed', $this);
throw new \Gc\Exception($e->getMessage(), $e->getCode(), $e);
}
}