protected function updateRelation($relations)
{
foreach ($relations as $name => $values) {
if (!method_exists($this->model, $name)) {
continue;
}
$prepared = $this->prepareUpdate([$name => $values]);
if (empty($prepared)) {
continue;
}
$relation = $this->model->{$name}();
switch (get_class($relation)) {
case \Illuminate\Database\Eloquent\Relations\BelongsToMany::class:
$relation->sync($prepared[$name]);
break;
case \Illuminate\Database\Eloquent\Relations\HasOne::class:
foreach ($prepared[$name] as $column => $value) {
$this->model->{$name}->setAttribute($column, $value);
}
$this->model->{$name}->save();
break;
}
}
}