99use Illuminate \Support \Arr ;
1010use Illuminate \Support \Facades \Schema ;
1111use Statamic \Fields \Field ;
12+ use Statamic \Support \Traits \Hookable ;
1213use StatamicRadPack \Runway \Fieldtypes \HasManyFieldtype ;
1314
1415class Relationships
1516{
17+ use Hookable;
18+
1619 public function __construct (protected Model $ model , protected array $ values = []) {}
1720
1821 public static function for (Model $ model ): self
@@ -34,10 +37,12 @@ public function save(): void
3437 ->filter (fn (Field $ field ) => $ field ->fieldtype () instanceof HasManyFieldtype)
3538 ->each (function (Field $ field ): void {
3639 $ relationshipName = $ this ->model ->runwayResource ()->eloquentRelationships ()->get ($ field ->handle ());
40+ $ values = $ this ->values [$ relationshipName ] ?? [];
3741
3842 match (get_class ($ relationship = $ this ->model ->{$ relationshipName }())) {
39- HasMany::class => $ this ->saveHasManyRelationship ($ field , $ relationship , $ this ->values [$ field ->handle ()] ?? []),
40- BelongsToMany::class => $ this ->saveBelongsToManyRelationship ($ field , $ relationship , $ this ->values [$ field ->handle ()] ?? []),
43+ HasMany::class => $ this ->saveHasManyRelationship ($ field , $ relationship , $ values ),
44+ BelongsToMany::class => $ this ->saveBelongsToManyRelationship ($ field , $ relationship , $ values ),
45+ default => $ this ->runHooks ('saveCustomRelationship ' , compact ('field ' , 'relationship ' , 'values ' )),
4146 };
4247 });
4348 }
0 commit comments