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

Create a new empty immutable Query.

Return Value

query_builder

at line 82
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 97
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 105
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 113
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 125
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 140
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 152
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 167
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 179
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 191
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 207
query_builder with_metadata(array $keys)

Request eager-loading of specific metadata keys.

Parameters

array $keys

Return Value

query_builder

at line 221
query_builder with_relation(string $relation)

Request eager-loading of a registered relation.

Parameters

string $relation

Return Value

query_builder

at line 241
query_builder without_global_scope(string $identifier)

Disable a specific global scope.

Parameters

string $identifier

Return Value

query_builder

at line 253
query_builder without_global_scopes()

Disable all global scopes.

Return Value

query_builder

at line 267
query_builder select(array $fields)

Define explicit SELECT columns.

Parameters

array $fields

Return Value

query_builder

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

Toggle returning stdClass instead of domain entities.

Parameters

bool $enabled

Return Value

query_builder

at line 299
query_builder domain(string $class)

Set the target domain class for hydration.

Parameters

string $class

Return Value

query_builder

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

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

Parameters

int $limit

Return Value

query_builder

at line 339
array get_wheres()

Get base WHERE filters.

Return Value

array

at line 349
array get_meta_wheres()

Get metadata WHERE filters.

Return Value

array

at line 359
array get_joins()

Get JOIN definitions.

Return Value

array

at line 369
array get_relations()

Get requested relations for eager loading.

Return Value

array

at line 379
array get_metadata_keys()

Get metadata keys requested for eager loading.

Return Value

array

at line 389
array get_excluded_scopes()

Get excluded global scopes.

Return Value

array

at line 399
array|null get_select()

Get explicit select columns if defined.

Return Value

array|null

at line 407
string|null get_sort()

Get ORDER BY clause string.

Return Value

string|null

at line 415
bool wants_std_class()

Check if results should be hydrated as stdClass.

Return Value

bool

at line 423
int|null get_page()

Get current page for pagination (0-based).

Return Value

int|null

at line 431
int|null get_per_page()

Get per-page limit for pagination.

Return Value

int|null

at line 441
string get_domain_class()

Get the target domain class for hydration.

Return Value

string