final class query_builder implements query_builder_interface

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 69
static query_builder make()

Create a new empty immutable Query.

Return Value

query_builder

at line 81
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 96
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 104
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 112
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 124
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 139
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 151
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 166
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 178
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 190
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 206
query_builder with_metadata(array $keys)

Request eager-loading of specific metadata keys.

Parameters

array $keys

Return Value

query_builder

at line 220
query_builder with_relation(string $relation)

Request eager-loading of a registered relation.

Parameters

string $relation

Return Value

query_builder

at line 240
query_builder without_global_scope(string $identifier)

Disable a specific global scope.

Parameters

string $identifier

Return Value

query_builder

at line 252
query_builder without_global_scopes()

Disable all global scopes.

Return Value

query_builder

at line 266
query_builder select(array $fields)

Define explicit SELECT columns.

Parameters

array $fields

Return Value

query_builder

at line 276
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 286
query_builder as_std_class(bool $enabled = true)

Toggle returning stdClass instead of domain entities.

Parameters

bool $enabled

Return Value

query_builder

at line 298
query_builder domain(string $class)

Set the target domain class for hydration.

Parameters

string $class

Return Value

query_builder

at line 312
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 323
query_builder limit(int $limit)

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

Parameters

int $limit

Return Value

query_builder

at line 338
array get_wheres()

Get base WHERE filters.

Return Value

array

at line 348
array get_meta_wheres()

Get metadata WHERE filters.

Return Value

array

at line 358
array get_joins()

Get JOIN definitions.

Return Value

array

at line 368
array get_relations()

Get requested relations for eager loading.

Return Value

array

at line 378
array get_metadata_keys()

Get metadata keys requested for eager loading.

Return Value

array

at line 388
array get_excluded_scopes()

Get excluded global scopes.

Return Value

array

at line 398
array|null get_select()

Get explicit select columns if defined.

Return Value

array|null

at line 406
string|null get_sort()

Get ORDER BY clause string.

Return Value

string|null

at line 414
bool wants_std_class()

Check if results should be hydrated as stdClass.

Return Value

bool

at line 422
int|null get_page()

Get current page for pagination (0-based).

Return Value

int|null

at line 430
int|null get_per_page()

Get per-page limit for pagination.

Return Value

int|null

at line 440
string get_domain_class()

Get the target domain class for hydration.

Return Value

string