[12.x] Fix pivot model observers not working properly when using withPivotValue #55247
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 PR fixes issue #55026 where pivot model observers don't work properly when using the
withPivotValuemethod.Description
When using a custom pivot model class with observers and calling
withPivotValueon a relationship, the update and delete events don't fire as expected. This happens becausewithPivotValueadds conditions topivotWheres, which prevents the code from using the custom pivot class path for updates and detaches.Solution
withPivotValueto mark where clauses that come from it with afrom_pivot_valueflaggetNonPivotValueWhereClausesmethod to filter out where clauses that come fromwithPivotValueupdateExistingPivotanddetachmethods to check for non-pivot-value where clauses instead of all where clausesnewPivotQueryto properly apply where clauses but remove the flag before building the queryThe solution ensures that pivot model observers work properly with
withPivotValuewhile maintaining the filtering behavior required by the relation.