feat: add Query Builder whereBetween methods#10199
Open
memleakd wants to merge 1 commit into
Open
Conversation
Add whereBetween(), orWhereBetween(), whereNotBetween(), and orWhereNotBetween() to Query Builder. - Bind lower and upper range values through the existing bind system - Protect identifiers at compile time for alias and prefix correctness - Add Model method annotations, user guide docs, and changelog entry - Cover normal, OR, NOT, grouped, unescaped, aliased, prefixed, and invalid input cases Signed-off-by: memleakd <121398829+memleakd@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
This PR proposes adding
whereBetween(),orWhereBetween(),whereNotBetween(), andorWhereNotBetween()to the Query Builder.BETWEENandNOT BETWEENconditions are common when filtering by date ranges, numeric ranges, prices, scores, and other lower/upper bound values. Today users can already write these conditions manually withwhere(), but that usually means writing theBETWEEN ... AND ...expression as a raw condition.This adds a small Query Builder-native option:
This keeps range conditions readable while still using Query Builder binds for the lower and upper values and normal identifier protection for the field name.
The range array must contain exactly two values: the lower and upper bounds.
BETWEENis inclusive, matching SQL behavior.The API follows the existing Query Builder style used by methods like
whereIn(): field name first, values second, optional$escapethird. Users who need a more complex SQL expression can still usewhere()withRawSql.Changes
whereBetween()andorWhereBetween().whereNotBetween()andorWhereNotBetween().OR,NOT BETWEEN, grouped conditions, bind handling,escape: false, table prefixes, aliases added after the condition, and invalid inputs.Checklist: