Fix empty relationship queries on SelectFilter with hasEmptyOption enabled #18853
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.
Description
The SelectFilter injects an option with the key
__emptyto the top of the options whenhasEmptyOptionis enabled (integrating a relationship).This causes an "Invalid text representation" error, as
__emptyis an invalid value for columns of type int / bigint ("id" = __empty) on pgsql.In order to fix this I have added a static method
getRelationshipQueryValues, which filters said__emptykey from the (state) value string / values array. I've replaced the arrays$state['values']and$valueswith this helper method only where a relationship is queried, so custom option arrays remain untouched.In the
applymethod I have changed the query to check for an empty value / empty values, so the relationship scope would not be applied, as"id" = ""would result in yet another error.For convenience I've also introduced a static property carrying the
$emptyRelationshipOptionKey(__empty).Visual changes
There are no visual changes.
Functional changes
composer cscommand.