Skip to content

Commit 59521e7

Browse files
committed
Delete any field which is not present in returned value
1 parent 2e2a2e3 commit 59521e7

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

src/Observers/HasManyObserver.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace KirschbaumDevelopment\NovaInlineRelationship\Observers;
44

5+
use Illuminate\Support\Arr;
56
use Illuminate\Database\Eloquent\Model;
67

78
class HasManyObserver extends BaseObserver
@@ -11,7 +12,11 @@ class HasManyObserver extends BaseObserver
1112
*/
1213
public function updating(Model $model, $attribute, $value)
1314
{
14-
$count = count($value);
15+
$model->{$attribute}()
16+
->whereNotIn('id', Arr::pluck($value, 'modelId'))
17+
->get()
18+
->each
19+
->delete();
1520

1621
$childModels = $model->{$attribute}()->get()->all();
1722

@@ -20,12 +25,6 @@ public function updating(Model $model, $attribute, $value)
2025
? $childModels[$i]->update($value[$i])
2126
: $model->{$attribute}()->create($value[$i]);
2227
}
23-
24-
if ($count < count($childModels)) {
25-
for ($i = $count; $i < count($childModels); $i++) {
26-
$childModels[$i]->delete();
27-
}
28-
}
2928
}
3029

3130
/**

0 commit comments

Comments
 (0)