fix: use instanceof for relation detection #1027
Open
+26
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
what i have done
This PR replaces the incorrect use of
is_subclass_of()withinstanceofin thegetRelatedModelFromRelation()method.When the relation method returns an actual instance (f.e.
BelongsTo,HasMany, etc.),is_subclass_of()returns false, since it expects a class name string.This caused false negatives when verifying Eloquent relation types.
why
is_subclass_of()checks class inheritance on class names, not on instances, leading to incorrect results.instanceofcorrectly identifies Relation instances and their subclasses (BelongsTo,HasMany,MorphTo, etc.).Tests
throws RelationNotFoundException when the relation method exists but does not return an Eloquent Relationresult
