Fixed crash when key contains BackedEnum #183
Merged
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.
resolves #168, resolves: #176
Fixed an issue where relationships could not be retrieved if a composite key contained a value casted to an enum.
PHP 8.1, Laravel 8, supports the ability to cast specific column values to
BackedEnum
and reference them from an Eloquent model.Reference:
https://laravel.com/docs/8.x/eloquent-mutators#enum-casting
However, our library did not support this feature. If a BackedEnum value is included as part of a composite key, retrieving a relationship would crash.
HasMany
relationshipsHasMany
relationshipsBenlongTo
relationshipsAll of these issues are caused by our library assuming that the key value can be interpreted as a
string
. InaddConstraints
before query execution andmatch
after execution, the key is evaluated as a string usingimplode
orarray_unique
.An attribute cast to a BackEnum has its backed value before the cast, so evaluating
$backedEum->value
instead of$backedEnum
in the offending operation will solve this issue.