query_builder
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
Create a new empty immutable Query.
Add a base WHERE condition.
Add an IN filter for a field.
Add a NOT IN filter for a field.
Add a BETWEEN constraint for a field.
Add a WHERE condition targeting metadata table.
Add an IN filter for metadata values.
Add a generic JOIN clause.
Join against the items table with defaults for parent->id.
Join against Moodle course table.
Join against Moodle user table.
Request eager-loading of specific metadata keys.
Request eager-loading of a registered relation.
Disable a specific global scope.
Disable all global scopes.
Define explicit SELECT columns.
Define ORDER BY clause (raw string, e.g., "fullname ASC").
Toggle returning stdClass instead of domain entities.
Set the target domain class for hydration.
Enable pagination with page and per-page values.
Limit the number of returned rows (no pagination metadata).
Get base WHERE filters.
Get metadata WHERE filters.
Get JOIN definitions.
Get requested relations for eager loading.
Get metadata keys requested for eager loading.
Get excluded global scopes.
Get explicit select columns if defined.
Get ORDER BY clause string.
Check if results should be hydrated as stdClass.
Get current page for pagination (0-based).
Get per-page limit for pagination.
Get the target domain class for hydration.
Details
at line 70
static query_builder
make()
Create a new empty immutable Query.
at line 82
query_builder
where(string $field, operator $operator, mixed $value = null, mixed $value2 = null)
Add a base WHERE condition.
at line 97
query_builder
where_in(string $field, array $values)
Add an IN filter for a field.
at line 105
query_builder
where_not_in(string $field, array $values)
Add a NOT IN filter for a field.
at line 113
query_builder
where_between(string $field, mixed $start, mixed $end)
Add a BETWEEN constraint for a field.
at line 125
query_builder
where_meta(string $key, operator $operator, mixed $value = null, mixed $value2 = null)
Add a WHERE condition targeting metadata table.
at line 140
query_builder
where_meta_in(string $key, array $values)
Add an IN filter for metadata values.
at line 152
query_builder
join(string $table, string $alias, string $on, string $type = 'INNER')
Add a generic JOIN clause.
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.
at line 179
query_builder
join_course(string $alias = 'c', string $local_field = 'courseid', string $foreign_field = 'id')
Join against Moodle course table.
at line 191
query_builder
join_user(string $alias = 'u', string $local_field = 'userid', string $foreign_field = 'id')
Join against Moodle user table.
at line 207
query_builder
with_metadata(array $keys)
Request eager-loading of specific metadata keys.
at line 221
query_builder
with_relation(string $relation)
Request eager-loading of a registered relation.
at line 241
query_builder
without_global_scope(string $identifier)
Disable a specific global scope.
at line 253
query_builder
without_global_scopes()
Disable all global scopes.
at line 267
query_builder
select(array $fields)
Define explicit SELECT columns.
at line 277
query_builder
order_by(string $sort)
Define ORDER BY clause (raw string, e.g., "fullname ASC").
at line 287
query_builder
as_std_class(bool $enabled = true)
Toggle returning stdClass instead of domain entities.
at line 299
query_builder
domain(string $class)
Set the target domain class for hydration.
at line 313
query_builder
paginate(int $page, int $per_page)
Enable pagination with page and per-page values.
at line 324
query_builder
limit(int $limit)
Limit the number of returned rows (no pagination metadata).
at line 339
array
get_wheres()
Get base WHERE filters.
at line 349
array
get_meta_wheres()
Get metadata WHERE filters.
at line 359
array
get_joins()
Get JOIN definitions.
at line 369
array
get_relations()
Get requested relations for eager loading.
at line 379
array
get_metadata_keys()
Get metadata keys requested for eager loading.
at line 389
array
get_excluded_scopes()
Get excluded global scopes.
at line 399
array|null
get_select()
Get explicit select columns if defined.
at line 407
string|null
get_sort()
Get ORDER BY clause string.
at line 415
bool
wants_std_class()
Check if results should be hydrated as stdClass.
at line 423
int|null
get_page()
Get current page for pagination (0-based).
at line 431
int|null
get_per_page()
Get per-page limit for pagination.
at line 441
string
get_domain_class()
Get the target domain class for hydration.