final class query_builder implements query_builder_interface

internal  
 

Immutable Query Object.

This object is a pure data-structure describing the query the developer wants. It holds NO SQL and does not know Moodle's DB API.

It is final to preserve immutability integrity.

Methods

static query_builder
make()

Create a new empty immutable Query.

where(string $field, operator $operator, mixed $value = null, mixed $value2 = null)

Add a base WHERE condition.

where_in(string $field, array $values)

Add an IN filter for a field.

where_not_in(string $field, array $values)

Add a NOT IN filter for a field.

where_between(string $field, mixed $start, mixed $end)

Add a BETWEEN constraint for a field.

where_meta(string $key, operator $operator, mixed $value = null, mixed $value2 = null)

Add a WHERE condition targeting metadata table.

where_meta_in(string $key, array $values)

Add an IN filter for metadata values.

join(string $table, string $alias, string $on, string $type = 'INNER')

Add a generic JOIN clause.

join_item(string $alias, string $local_field = 'parent', string $foreign_field = 'id')

Join against the items table with defaults for parent->id.

join_course(string $alias = 'c', string $local_field = 'courseid', string $foreign_field = 'id')

Join against Moodle course table.

join_user(string $alias = 'u', string $local_field = 'userid', string $foreign_field = 'id')

Join against Moodle user table.

with_metadata(array $keys)

Request eager-loading of specific metadata keys.

with_relation(string $relation)

Request eager-loading of a registered relation.

without_global_scope(string $identifier)

Disable a specific global scope.

without_global_scopes()

Disable all global scopes.

select(array $fields)

Define explicit SELECT columns.

order_by(string $sort)

Define ORDER BY clause (raw string, e.g., "fullname ASC").

as_std_class(bool $enabled = true)

Toggle returning stdClass instead of domain entities.

domain(string $class)

Set the target domain class for hydration.

paginate(int $page, int $per_page)

Enable pagination with page and per-page values.

limit(int $limit)

Limit the number of returned rows (no pagination metadata).

array
get_wheres()

Get base WHERE filters.

array
get_meta_wheres()

Get metadata WHERE filters.

array
get_joins()

Get JOIN definitions.

array
get_relations()

Get requested relations for eager loading.

array
get_metadata_keys()

Get metadata keys requested for eager loading.

array
get_excluded_scopes()

Get excluded global scopes.

array|null
get_select()

Get explicit select columns if defined.

string|null
get_sort()

Get ORDER BY clause string.

bool
wants_std_class()

Check if results should be hydrated as stdClass.

int|null
get_page()

Get current page for pagination (0-based).

int|null
get_per_page()

Get per-page limit for pagination.

string
get_domain_class()

Get the target domain class for hydration.

Details

at line 72
static query_builder make()

Create a new empty immutable Query.

Return Value

query_builder

at line 84
query_builder where(string $field, operator $operator, mixed $value = null, mixed $value2 = null)

Add a base WHERE condition.

Parameters

string $field
operator $operator
mixed $value
mixed $value2

Return Value

query_builder

at line 99
query_builder where_in(string $field, array $values)

Add an IN filter for a field.

Parameters

string $field
array $values

Return Value

query_builder

at line 107
query_builder where_not_in(string $field, array $values)

Add a NOT IN filter for a field.

Parameters

string $field
array $values

Return Value

query_builder

at line 115
query_builder where_between(string $field, mixed $start, mixed $end)

Add a BETWEEN constraint for a field.

Parameters

string $field
mixed $start
mixed $end

Return Value

query_builder

at line 127
query_builder where_meta(string $key, operator $operator, mixed $value = null, mixed $value2 = null)

Add a WHERE condition targeting metadata table.

Parameters

string $key
operator $operator
mixed $value
mixed $value2

Return Value

query_builder

at line 142
query_builder where_meta_in(string $key, array $values)

Add an IN filter for metadata values.

Parameters

string $key
array $values

Return Value

query_builder

at line 154
query_builder join(string $table, string $alias, string $on, string $type = 'INNER')

Add a generic JOIN clause.

Parameters

string $table
string $alias
string $on
string $type

Return Value

query_builder

at line 169
query_builder join_item(string $alias, string $local_field = 'parent', string $foreign_field = 'id')

Join against the items table with defaults for parent->id.

Parameters

string $alias
string $local_field
string $foreign_field

Return Value

query_builder

at line 181
query_builder join_course(string $alias = 'c', string $local_field = 'courseid', string $foreign_field = 'id')

Join against Moodle course table.

Parameters

string $alias
string $local_field
string $foreign_field

Return Value

query_builder

at line 193
query_builder join_user(string $alias = 'u', string $local_field = 'userid', string $foreign_field = 'id')

Join against Moodle user table.

Parameters

string $alias
string $local_field
string $foreign_field

Return Value

query_builder

at line 209
query_builder with_metadata(array $keys)

Request eager-loading of specific metadata keys.

Parameters

array $keys

Return Value

query_builder

at line 223
query_builder with_relation(string $relation)

Request eager-loading of a registered relation.

Parameters

string $relation

Return Value

query_builder

at line 243
query_builder without_global_scope(string $identifier)

Disable a specific global scope.

Parameters

string $identifier

Return Value

query_builder

at line 255
query_builder without_global_scopes()

Disable all global scopes.

Return Value

query_builder

at line 269
query_builder select(array $fields)

Define explicit SELECT columns.

Parameters

array $fields

Return Value

query_builder

at line 279
query_builder order_by(string $sort)

Define ORDER BY clause (raw string, e.g., "fullname ASC").

Parameters

string $sort

Return Value

query_builder

at line 289
query_builder as_std_class(bool $enabled = true)

Toggle returning stdClass instead of domain entities.

Parameters

bool $enabled

Return Value

query_builder

at line 301
query_builder domain(string $class)

Set the target domain class for hydration.

Parameters

string $class

Return Value

query_builder

at line 315
query_builder paginate(int $page, int $per_page)

Enable pagination with page and per-page values.

Parameters

int $page
int $per_page

Return Value

query_builder

at line 326
query_builder limit(int $limit)

Limit the number of returned rows (no pagination metadata).

Parameters

int $limit

Return Value

query_builder

at line 341
array get_wheres()

Get base WHERE filters.

Return Value

array

at line 351
array get_meta_wheres()

Get metadata WHERE filters.

Return Value

array

at line 361
array get_joins()

Get JOIN definitions.

Return Value

array

at line 371
array get_relations()

Get requested relations for eager loading.

Return Value

array

at line 381
array get_metadata_keys()

Get metadata keys requested for eager loading.

Return Value

array

at line 391
array get_excluded_scopes()

Get excluded global scopes.

Return Value

array

at line 401
array|null get_select()

Get explicit select columns if defined.

Return Value

array|null

at line 409
string|null get_sort()

Get ORDER BY clause string.

Return Value

string|null

at line 417
bool wants_std_class()

Check if results should be hydrated as stdClass.

Return Value

bool

at line 425
int|null get_page()

Get current page for pagination (0-based).

Return Value

int|null

at line 433
int|null get_per_page()

Get per-page limit for pagination.

Return Value

int|null

at line 443
string get_domain_class()

Get the target domain class for hydration.

Return Value

string