[10.x] Fix whereNull queries with raw expressions for the MySql grammar #46538
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.
Hello team 👋
I was migrating from Laravel 9 to 10 and got this error on some instances of using DB::raw():
TypeError: str_contains(): Argument #1 ($haystack) must be of type string, Illuminate\Database\Query\Expression given
.This error was not present in Laravel 9, and code like this
->select('*')->from('users')->whereNull(new Raw('id'))
worked fine.The issue was in
whereNull()
andwhereNotNull()
methods for the MySQL grammar. It has a different implementation from the other grammars for these two methods. I think we're only missing a check for raw DB expressions.I hope these changes are correct or at least in the right direction.