public function save(Model\Object\Concrete $object)
{
$tableName = $this->model->getDefinition()->getTableName($object->getClass());
$data = ["o_id" => $object->getId(), "index" => $this->model->getIndex(), "fieldname" => $this->model->getFieldname()];
try {
foreach ($this->model->getDefinition()->getFieldDefinitions() as $fd) {
$getter = "get" . ucfirst($fd->getName());
if (method_exists($fd, "save")) {
// for fieldtypes which have their own save algorithm eg. objects, multihref, ...
$index = $this->model->getIndex();
$fd->save($this->model, ["context" => ["containerType" => "fieldcollection", "containerKey" => $this->model->getType(), "fieldname" => $this->model->getFieldname(), "index" => $index]]);
} elseif ($fd->getColumnType()) {
if (is_array($fd->getColumnType())) {
$insertDataArray = $fd->getDataForResource($this->model->{$getter}(), $object, ['context' => $this->model]);
$data = array_merge($data, $insertDataArray);
} else {
$data[$fd->getName()] = $fd->getDataForResource($this->model->{$getter}(), $object, ['context' => $this->model]);
}
}
}
$this->db->insert($tableName, $data);
} catch (\Exception $e) {
throw $e;
}
}