[8.x] Fix Eager loading partially nullable morphTo relations #36129
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.
This pull request fixes errors when 1 model has multiple polymorphic relationships sharing same "type" column.
In case we have a polymorphic relationship, where
_type
column is empty, script will work great. But if the_id
column is empty, script will throw an exception.For an example, if model has the following columns:
and the following relationships:
When we eager load both polymorphic relationships and one of the columns (related_old_id or related_new_id) are null, execution will fail (especially if we are dealing with uuids) because the function will convert all values to string (null => '') and '' is invalid uuid syntax.
ERROR: invalid input syntax for type uuid: \"\" (SQL: select * from \"user\" where \"user\".\"id\" in (, 68504945-959d-4e13-b1b4-7a250523cc24))"
This pull requests filters out nullable values and eager loads only non-nullable values.