66
77use Illuminate \Database \Eloquent \Builder ;
88use Illuminate \Database \Eloquent \Model ;
9+ use Illuminate \Database \Eloquent \Relations \BelongsTo as BelongsToRelation ;
910use Illuminate \Database \Eloquent \Relations \MorphPivot ;
10- use Illuminate \Database \Eloquent \Relations \MorphTo as MorphToRelation ;
1111use Illuminate \Database \Eloquent \Relations \MorphToMany as EloquentRelation ;
1212use Illuminate \Http \Request ;
1313
@@ -30,24 +30,26 @@ public function getRelation(Model $model): EloquentRelation
3030 public function fields (Request $ request ): array
3131 {
3232 return [
33- MorphTo::make ($ this ->getRelatedName (), 'related ' , static fn (MorphPivot $ model ): MorphToRelation => $ model ->morphTo (
34- 'related ' ,
35- $ model ->getMorphType (),
36- $ model ->getRelatedKey (),
37- $ model ->getForeignKey (),
38- )->withDefault ())
39- ->withRelatableQuery (
40- fn (Request $ request , Builder $ query , MorphPivot $ model ): Builder => $ this ->resolveRelatableQuery ($ request , $ model ->pivotParent )
41- ->unless ($ this ->allowDuplicateRelations , fn (Builder $ query ): Builder => $ query ->whereNotIn (
33+ BelongsTo::make ($ this ->getRelatedName (), 'related ' , static function (Model $ model ): BelongsToRelation {
34+ return $ model ->belongsTo (
35+ $ model ::class,
36+ $ model ->getRelatedKey (),
37+ $ model ->getForeignKey ()
38+ )->withDefault ();
39+ })->withRelatableQuery (function (Request $ request , Builder $ query , Model $ model ): Builder {
40+ return $ this ->resolveRelatableQuery ($ request , $ model ->pivotParent )
41+ ->unless ($ this ->allowDuplicateRelations , function (Builder $ query ) use ($ model ): Builder {
42+ return $ query ->whereNotIn (
4243 $ query ->getModel ()->getQualifiedKeyName (),
4344 $ this ->getRelation ($ model ->pivotParent )->select ($ query ->getModel ()->getQualifiedKeyName ())
44- )))
45- ->hydrate (function (Request $ request , MorphPivot $ model , mixed $ value ): void {
46- $ model ->setAttribute (
47- $ this ->getRelation ($ model ->pivotParent )->getRelatedPivotKeyName (),
48- $ value
49- );
50- })->display (fn (Model $ model ): ?string => $ this ->resolveDisplay ($ model )),
45+ );
46+ });
47+ })->hydrate (function (Request $ request , MorphPivot $ model , mixed $ value ): void {
48+ $ model ->setAttribute (
49+ $ this ->getRelation ($ model ->pivotParent )->getRelatedPivotKeyName (),
50+ $ value
51+ );
52+ })->display (fn (Model $ model ): ?string => $ this ->resolveDisplay ($ model )),
5153 ];
5254 }
5355}
0 commit comments