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 69
static query_builder
make()
Create a new empty immutable Query.
at line 81
query_builder
where(string $field, operator $operator, mixed $value = null, mixed $value2 = null)
Add a base WHERE condition.
at line 96
query_builder
where_in(string $field, array $values)
Add an IN filter for a field.
at line 104
query_builder
where_not_in(string $field, array $values)
Add a NOT IN filter for a field.
at line 112
query_builder
where_between(string $field, mixed $start, mixed $end)
Add a BETWEEN constraint for a field.
at line 124
query_builder
where_meta(string $key, operator $operator, mixed $value = null, mixed $value2 = null)
Add a WHERE condition targeting metadata table.
at line 139
query_builder
where_meta_in(string $key, array $values)
Add an IN filter for metadata values.
at line 151
query_builder
join(string $table, string $alias, string $on, string $type = 'INNER')
Add a generic JOIN clause.
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.
at line 178
query_builder
join_course(string $alias = 'c', string $local_field = 'courseid', string $foreign_field = 'id')
Join against Moodle course table.
at line 190
query_builder
join_user(string $alias = 'u', string $local_field = 'userid', string $foreign_field = 'id')
Join against Moodle user table.
at line 206
query_builder
with_metadata(array $keys)
Request eager-loading of specific metadata keys.
at line 220
query_builder
with_relation(string $relation)
Request eager-loading of a registered relation.
at line 240
query_builder
without_global_scope(string $identifier)
Disable a specific global scope.
at line 252
query_builder
without_global_scopes()
Disable all global scopes.
at line 266
query_builder
select(array $fields)
Define explicit SELECT columns.
at line 276
query_builder
order_by(string $sort)
Define ORDER BY clause (raw string, e.g., "fullname ASC").
at line 286
query_builder
as_std_class(bool $enabled = true)
Toggle returning stdClass instead of domain entities.
at line 298
query_builder
domain(string $class)
Set the target domain class for hydration.
at line 312
query_builder
paginate(int $page, int $per_page)
Enable pagination with page and per-page values.
at line 323
query_builder
limit(int $limit)
Limit the number of returned rows (no pagination metadata).
at line 338
array
get_wheres()
Get base WHERE filters.
at line 348
array
get_meta_wheres()
Get metadata WHERE filters.
at line 358
array
get_joins()
Get JOIN definitions.
at line 368
array
get_relations()
Get requested relations for eager loading.
at line 378
array
get_metadata_keys()
Get metadata keys requested for eager loading.
at line 388
array
get_excluded_scopes()
Get excluded global scopes.
at line 398
array|null
get_select()
Get explicit select columns if defined.
at line 406
string|null
get_sort()
Get ORDER BY clause string.
at line 414
bool
wants_std_class()
Check if results should be hydrated as stdClass.
at line 422
int|null
get_page()
Get current page for pagination (0-based).
at line 430
int|null
get_per_page()
Get per-page limit for pagination.
at line 440
string
get_domain_class()
Get the target domain class for hydration.