Fix BelongsToMany Relation to Support Array Foreign Keys in Laravel MongoDB #3310
+59
−2
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’s in This PR?
This PR fixes the
BelongsToMany
relationship to support array-based foreign keys, allowing multiple related ObjectIds to be stored in a single field.🐞 The Issue
BelongsToMany
expected foreign keys to be a single value, causing issues when an array was used.Illegal offset type
when working with MongoDB.🔍 Issue Reference
Fixes [#3015]
🔧 Changes Made
✅ Updated
attach()
inBelongsToMany.php
to store ObjectIds as an array instead of a single value.✅ Modified
buildDictionary()
to correctly handle arrays when resolving relationships.✅ Added a new unit test:
testBelongsToManyRelationSupportsArrayForeignKeys
(intests/RelationsTest.php
).🧪 How to Test It?
📜 Documentation Update Checklist
✔️ Updated Many-to-Many Relationship section in the docs.
✔️ Explained how to use array-based foreign keys with
BelongsToMany()
.✔️ Added an example showing how to define relationships with an array field.
Checklist