[11.x] Where doesnt have nullable morph #54363
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.
Hey, this PR aims to resolve this issue.
The problem currently (as described in the issue) is that
QueriesRelationships::excludes Models with anullmorph_typevalue.This is due to the logic in
QueriesRelationships::hasMorphrevolving aroundtypes(which exludesnull):My proposed solution adds a conditional clause to the query, to also include models with a
nullmorph relation. I made the decision to widen the scope to include other operators - as this felt more complete of a solution than just solving for defaultwhereDoesntHave. I understand this comes with it's own drawbacks, and am happy to partly undo if desired.This only applies if the chosen
typeis wildcard, as I understand choosing types currently means any results must have that type of morph relation (and naturally,nullcannot acheieve this). Truthfully I'm not particularily confident on this bit - would appreciate any checking over!I've only added the test case from the issue, as it feels like the majority use case.
Please see my logic for deciding which operators to include below.