diff --git a/src/Observers/BelongsToManyObserver.php b/src/Observers/BelongsToManyObserver.php new file mode 100644 index 0000000..601157a --- /dev/null +++ b/src/Observers/BelongsToManyObserver.php @@ -0,0 +1,47 @@ +{$attribute}(); + $parentModel->sync([]); + $targetModel = $parentModel->getRelated(); + foreach($value as $v){ + $row = $targetModel::find($v['modelId']); + if($row){ + $row->update($v['fields']); + } else { + $row = $targetModel::create($v['fields']); + } + $parentModel->attach($row[$targetModel->getKeyName()]); + } + } + + /** + * {@inheritdoc} + */ + public function created(Model $model, $attribute, $value) + { + $parentModel = $model->{$attribute}(); + $parentModel->sync([]); + $targetModel = $parentModel->getRelated(); + foreach($value as $v){ + $row = $targetModel::find($v['modelId']); + if($row){ + $row->update($v['fields']); + } else { + $row = $targetModel::create($v['fields']); + } + $parentModel->attach($row[$targetModel->getKeyName()]); + } + } +}