classPredicates
final class Predicates
Predicate effects, retaining Laravel's clause and binding order.
A comparison value that is not a literal null is compiled as a bound placeholder, and a list whose contents are unknown as a placeholder list of unknown length. Laravel's null normalization and empty-set constants are reconstructed from literals only, since the null and emptiness guards that usually precede such calls are not evaluated.
Methods§
public function __construct(private Grammar $grammar)Uses the configured framework SQL grammar.
Parameters
$grammar | Grammar |
public function apply(QueryState $state, string $method, list<Domain> $arguments): ?QueryStateParameters
$state | QueryState | |
$method | string | |
$arguments | list<Domain> | A recognized predicate, or null for a different operation. |
Returns
Test cases 2
Called from 1
Calls 8
- function-call
str_starts_withline 38 - function-call
substrline 39 - method-call Predicates::basic() line 42
- method-call Predicates::nulls() line 43
- method-call Predicates::in() line 44
- method-call Predicates::between() line 45
- method-call Predicates::column() line 46
- method-call Predicates::raw() line 47
public function add(
QueryState $state,
Domain $sql,
list<Domain> $bindings,
string $boolean = 'and',
): QueryStateParameters
$state | QueryState | |
$sql | Domain | |
$bindings | list<Domain> | Appends one predicate and the values it binds. |
$boolean | string |
Returns
Test cases 1
Called from 11
- method-call SqlCatalog\Extension\Laravel\CallbackModel::nested() packages/sql-catalog/src/Extension/Laravel/CallbackModel.php:134
- method-call SqlCatalog\Extension\Laravel\Predicates::basic() packages/sql-catalog/src/Extension/Laravel/Predicates.php:111
- method-call SqlCatalog\Extension\Laravel\Predicates::group() packages/sql-catalog/src/Extension/Laravel/Predicates.php:153
- method-call SqlCatalog\Extension\Laravel\Predicates::nulls() packages/sql-catalog/src/Extension/Laravel/Predicates.php:187
- method-call SqlCatalog\Extension\Laravel\Predicates::in() packages/sql-catalog/src/Extension/Laravel/Predicates.php:205
- method-call SqlCatalog\Extension\Laravel\Predicates::in() packages/sql-catalog/src/Extension/Laravel/Predicates.php:215
- method-call SqlCatalog\Extension\Laravel\Predicates::between() packages/sql-catalog/src/Extension/Laravel/Predicates.php:236
- method-call SqlCatalog\Extension\Laravel\Predicates::column() packages/sql-catalog/src/Extension/Laravel/Predicates.php:253
- method-call SqlCatalog\Extension\Laravel\Predicates::raw() packages/sql-catalog/src/Extension/Laravel/Predicates.php:266
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:88
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:91
Calls 3
- method-call QueryState::items() line 57
- method-call QueryState::append() line 59
- static-call Domain::literal() line 59
public function groupDisjunction(QueryState $state): QueryStateGroups existing disjunctions before a global scope adds its predicate.
Parameters
$state | QueryState |
Returns
Called from 1
Calls 7
- method-call QueryState::items() line 67
- function-call
is_stringline 69 - function-call
str_starts_withline 69 - static-call Domain::literal() line 70
- method-call Grammar::join() line 70
- method-call QueryState::with() line 72
- static-call QueryState::list() line 72
public function basic(QueryState $state, list<Domain> $arguments, string $boolean): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | A scalar comparison, including Laravel's null normalization. |
$boolean | string |
Returns
Test cases 5
PredicatesTest::testApplyDispatchesOrPredicatesAndRejectsOtherOperationscallsPredicatesTest::testBasicCompilesUnresolvedAndNullableValuesAsPlaceholderscallsPredicatesTest::testBasicNormalizesNullAndPreservesComparisonBindingscallsPredicatesTest::testEntryReadsKeyedComparisonsAndPositionalArgumentListscallsPredicatesTest::testGroupNestsArrayEntriesInParenthesesWithTheOuterBooleancalls
Called from 5
- method-call SqlCatalog\Extension\Laravel\Predicates::apply() packages/sql-catalog/src/Extension/Laravel/Predicates.php:42
- method-call SqlCatalog\Extension\Laravel\Predicates::entry() packages/sql-catalog/src/Extension/Laravel/Predicates.php:163
- method-call SqlCatalog\Extension\Laravel\Predicates::entry() packages/sql-catalog/src/Extension/Laravel/Predicates.php:170
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:76
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:34
Calls 11
- function-call
countline 84 - method-call Predicates::group() line 85
- function-call
is_stringline 89 - function-call
in_arrayline 89 - function-call
strtolowerline 89 - method-call QueryState::reject() line 90
- function-call
array_sliceline 93 - static-call Domain::literal() line 98
- method-call Predicates::nulls() line 103
- method-call Predicates::comparison() line 106
- method-call Predicates::add() line 111
Parameters
$arguments | list<Domain> |
Returns
Test cases 1
Called from 2
Calls 9
- function-call
in_arrayline 120 - function-call
countline 120 - static-call Domain::literal() line 123
- function-call
is_stringline 125 - function-call
strtolowerline 125 - class-const Predicates::OPERATORS() line 125
- method-call Grammar::wrap() line 128
- method-call Grammar::parameter() line 128
- method-call Grammar::bindings() line 130
public function group(QueryState $state, ArrayTerm $entries, string $boolean): QueryStateAn array of comparisons, nested in parentheses the way Laravel adds them.
Parameters
$state | QueryState | |
$entries | ArrayTerm | |
$boolean | string |
Returns
Called from 1
Calls 6
- method-call QueryState::reject() line 139
- new QueryState line 141
- method-call Predicates::entry() line 143
- static-call Domain::literal() line 151
- method-call Grammar::join() line 151
- method-call Predicates::add() line 153
public function entry(QueryState $inner, ArrayEntry $entry, string $boolean): QueryStateOne entry of a where array: a column keyed value, or a positional argument list.
Parameters
$inner | QueryState | |
$entry | ArrayEntry | |
$boolean | string |
Returns
Test cases 1
Called from 1
Calls 7
- method-call ArrayEntry::scalarKey() line 161
- function-call
is_stringline 162 - method-call Predicates::basic() line 163
- static-call Domain::literal() line 163
- function-call
countline 166 - method-call QueryState::reject() line 167
- function-call
array_mergeline 170
public function nulls(
QueryState $state,
list<Domain> $arguments,
string $boolean,
bool $not,
): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | NULL tests on one or several columns. |
$boolean | string | |
$not | bool |
Returns
Test cases 2
Called from 4
- method-call SqlCatalog\Extension\Laravel\BuilderCalls::mutate() packages/sql-catalog/src/Extension/Laravel/BuilderCalls.php:227
- method-call SqlCatalog\Extension\Laravel\BuilderQueries::prepare() packages/sql-catalog/src/Extension/Laravel/BuilderQueries.php:116
- method-call SqlCatalog\Extension\Laravel\Predicates::apply() packages/sql-catalog/src/Extension/Laravel/Predicates.php:43
- method-call SqlCatalog\Extension\Laravel\Predicates::basic() packages/sql-catalog/src/Extension/Laravel/Predicates.php:103
Calls 6
- function-call
countline 178 - method-call QueryState::reject() line 179
- function-call
array_mapline 185 - method-call Predicates::add() line 187
- method-call Grammar::wrap() line 187
- static-call Domain::literal() line 187
public function in(
QueryState $state,
list<Domain> $arguments,
string $boolean,
bool $not,
): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | IN values, including the empty-set constants. |
$boolean | string | |
$not | bool |
Returns
Test cases 2
Called from 2
Calls 12
- function-call
countline 198 - method-call QueryState::reject() line 199
- method-call Grammar::wrap() line 203
- static-call Domain::literal() line 203
- method-call Grammar::placeholders() line 203
- method-call Predicates::add() line 205
- function-call
array_mapline 207 - function-call
array_filterline 208 - method-call Domain::soleArray() line 208
- method-call Grammar::join() line 213
- method-call Grammar::parameter() line 213
- method-call Grammar::bindings() line 215
public function between(
QueryState $state,
list<Domain> $arguments,
string $boolean,
bool $not,
): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | An ordered pair of bounds. |
$boolean | string | |
$not | bool |
Returns
Test cases 1
Called from 1
Calls 10
- function-call
countline 223 - method-call QueryState::reject() line 224
- method-call Grammar::element() line 228
- function-call
array_sliceline 229 - function-call
array_mapline 229 - method-call Grammar::wrap() line 233
- static-call Domain::literal() line 233
- method-call Grammar::parameter() line 234
- method-call Predicates::add() line 236
- method-call Grammar::bindings() line 236
public function column(QueryState $state, list<Domain> $arguments, string $boolean): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | A comparison between identifiers. |
$boolean | string |
Returns
Test cases 1
Called from 1
Calls 7
- function-call
in_arrayline 244 - function-call
countline 244 - method-call QueryState::reject() line 245
- static-call Domain::literal() line 247
- function-call
is_stringline 249 - method-call Predicates::add() line 253
- method-call Grammar::wrap() line 253
public function raw(QueryState $state, list<Domain> $arguments, string $boolean): QueryStateParameters
$state | QueryState | |
$arguments | list<Domain> | Explicit SQL with its bindings, one per placeholder when the array is unknown. |
$boolean | string |
Returns
Test cases 1
Called from 1
Calls 6
- function-call
in_arrayline 261 - function-call
countline 261 - method-call Grammar::rawBindings() line 261
- static-call QueryState::list() line 261
- method-call QueryState::reject() line 263
- method-call Predicates::add() line 266
Private surface 2§
Implementation details, listed for orientation only.
private const OPERATORS = ['=', '<', '>', '<=', '>=', '<>', '!=', 'like', 'not like']private Grammar $grammarTest cases 23§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 16
PredicatesTest::testAddDoesNotPrefixTheFirstPredicateWithABooleancallsPredicatesTest::testApplyDispatchesOrPredicatesAndRejectsOtherOperationscallsPredicatesTest::testApplyPreservesThePredicateAndBooleancallsPredicatesTest::testBasicCompilesUnresolvedAndNullableValuesAsPlaceholderscallsPredicatesTest::testBasicNormalizesNullAndPreservesComparisonBindingscallsPredicatesTest::testBetweenKeepsBothBoundsInOrdercallsPredicatesTest::testColumnDoesNotTurnTheRightIdentifierIntoABindingcallsPredicatesTest::testComparisonBindsNullLiterallyForClausesWithoutNullNormalizationcallsPredicatesTest::testEntryReadsKeyedComparisonsAndPositionalArgumentListscallsPredicatesTest::testGroupDisjunctionPreservesConjunctionsWithoutAddingParenthesescallsPredicatesTest::testGroupNestsArrayEntriesInParenthesesWithTheOuterBooleancallsPredicatesTest::testInHandlesEmptySetsAndOrderedValuescallsPredicatesTest::testInPreservesValuesFromAssociativeArraysAndRejectsNestedArrayscallsPredicatesTest::testNullsDoesNotDropUnknownColumnsOrAssociativeValuescallsPredicatesTest::testNullsSupportsMultipleColumnsWithoutBindingscallsPredicatesTest::testRawKeepsBindingsAndLeavesIncompleteArraysOpencalls
Other tests reaching this symbol 7
CallbackEffectsTestcallsBuilderCallsTestcallsBuilderQueriesTestcallsCallbackModelTestcallsCallModelTestcallsSelectCompilerTestcallsAnalyzerTestcalls
Relations§
Instantiated in 8
- new SqlCatalog\Extension\Laravel\BuilderCalls::mutate() packages/sql-catalog/src/Extension/Laravel/BuilderCalls.php:227
- new SqlCatalog\Extension\Laravel\BuilderCalls::mutate() packages/sql-catalog/src/Extension/Laravel/BuilderCalls.php:232
- new SqlCatalog\Extension\Laravel\BuilderQueries::prepare() packages/sql-catalog/src/Extension/Laravel/BuilderQueries.php:114
- new SqlCatalog\Extension\Laravel\BuilderQueries::prepare() packages/sql-catalog/src/Extension/Laravel/BuilderQueries.php:116
- new SqlCatalog\Extension\Laravel\CallbackModel::nested() packages/sql-catalog/src/Extension/Laravel/CallbackModel.php:134
- new SqlCatalog\Extension\Laravel\Clauses::having() packages/sql-catalog/src/Extension/Laravel/Clauses.php:158
- new SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:73
- new SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:34
Method calls 11
- method-call SqlCatalog\Extension\Laravel\BuilderCalls::mutate() packages/sql-catalog/src/Extension/Laravel/BuilderCalls.php:227
- method-call SqlCatalog\Extension\Laravel\BuilderCalls::mutate() packages/sql-catalog/src/Extension/Laravel/BuilderCalls.php:232
- method-call SqlCatalog\Extension\Laravel\BuilderQueries::prepare() packages/sql-catalog/src/Extension/Laravel/BuilderQueries.php:114
- method-call SqlCatalog\Extension\Laravel\BuilderQueries::prepare() packages/sql-catalog/src/Extension/Laravel/BuilderQueries.php:116
- method-call SqlCatalog\Extension\Laravel\CallbackModel::nested() packages/sql-catalog/src/Extension/Laravel/CallbackModel.php:134
- method-call SqlCatalog\Extension\Laravel\Clauses::having() packages/sql-catalog/src/Extension/Laravel/Clauses.php:158
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:76
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:80
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:88
- method-call SqlCatalog\Extension\Laravel\SelectCompiler::key() packages/sql-catalog/src/Extension/Laravel/SelectCompiler.php:91
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:34