public function update(array $args, array $wheres)
{
$config = $this->config;
$where = $this->parseWhere($wheres);
if (isset($where[$config->get('joinColumnName')]) === false) {
return null;
}
$updateParam = [];
foreach ($this->getColumns() as $column) {
$key = camel_case($config->get('id') . '_' . $column->name);
if ($config->get('required') && (isset($args[$key]) === true && $args[$key] === '')) {
throw new Exceptions\RequiredParameterException(['name' => $key]);
}
if (isset($args[$key])) {
$updateParam[$key] = $args[$key];
}
}
if (count($updateParam) > 0) {
if ($this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->where('dynamicFieldTargetId', '=', $where['id'])->first() != null) {
$this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->where('dynamicFieldTargetId', '=', $where['id'])->update($updateParam);
} else {
$insertParam = $updateParam;
$insertParam['dynamicFieldTargetId'] = $where['id'];
$this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->insert($insertParam);
}
}
}