public function setFieldArrayAttribute($field) { $create = []; if (!$field) { return; } if (!$this->exists) { $this->save(); } $fields = Field::where('page_id', $this->id)->get(); if (is_array($field)) { foreach ($field as $key => $val) { $isset = false; foreach ($fields as $v) { if ($v->name == $key) { $isset = true; if (!empty($val)) { $v->value = $val; } else { Field::destroy($v->id); } } } if (!$isset) { $create[$key] = $val; } } if (sizeof($create) > 0) { foreach ($create as $key => $val) { if (!empty($val)) { $f = new Field(); $f->name = $key; $f->value = $val; $fields[] = $f; } } } $this->fields()->saveMany($fields); } }