Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[9.x] Allow eloquent whereNot() and orWhereNot() to work on column and value #41296

Merged
merged 1 commit into from
Mar 4, 2022

Conversation

shadoWalker89
Copy link
Contributor

@shadoWalker89 shadoWalker89 commented Mar 2, 2022

Hi,

This PR #41096 added whereNot() and orWhereNot() to the eloquent query builder and query builder.

The PR allows to apply a where not on a group of wheres but does not allow to do something like this

$query->whereNot('role', 'admin'); // WHERE NOT role = 'admin'

This PR adds that (for both whereNot() and orWhereNot() ) while it also keeps the ability to use a where not on grouped wheres as well.

It will keep the same method signature developers are used to when using where() and orWhere() by allowing to specify and $operator and $column variables

If this PR is merged now, it will be a good thing since the Original PR was not yet tagged in any new release.

@taylorotwell
Copy link
Member

Ah - didn't see this until I tagged - but still probably not a big deal to merge it into 9.x since it just came out.

@shadoWalker89 shadoWalker89 changed the title [9.x] Allow eloquent whereNot() to work on column and value [9.x] Allow eloquent whereNot() and orWhereNot() to work on column and value Mar 2, 2022
@deleugpn
Copy link
Contributor

deleugpn commented Mar 2, 2022

Is whereNot('role', 'admin') the same as where('role', '<>', 'admin')? I really like that whereNot

@shadoWalker89
Copy link
Contributor Author

shadoWalker89 commented Mar 2, 2022

@deleugpn it will use the NOT keyword to negate the condition. See the code comment in the code example in the PR description.
In the end both will have the same effect on your query

@taylorotwell
Copy link
Member

How does this address: #41096 (comment)

@shadoWalker89
Copy link
Contributor Author

How does this address: #41096 (comment)

As mentioned in the MySQL documentation https://dev.mysql.com/doc/refman/8.0/en/operator-precedence.html the comparison operators have higher precedence then the NOT keyword which means we don't need to wrap a {operator} b within parentheses.

This is a very simple example to demonstrate that.

https://www.db-fiddle.com/f/hZTgE1x2hyT1ksx4CNDqnM/2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants