query_builder
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
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 72
static query_builder
make()
Create a new empty immutable Query.
at line 84
query_builder
where(string $field, operator $operator, mixed $value = null, mixed $value2 = null)
Add a base WHERE condition.
at line 99
query_builder
where_in(string $field, array $values)
Add an IN filter for a field.
at line 107
query_builder
where_not_in(string $field, array $values)
Add a NOT IN filter for a field.
at line 115
query_builder
where_between(string $field, mixed $start, mixed $end)
Add a BETWEEN constraint for a field.
at line 127
query_builder
where_meta(string $key, operator $operator, mixed $value = null, mixed $value2 = null)
Add a WHERE condition targeting metadata table.
at line 142
query_builder
where_meta_in(string $key, array $values)
Add an IN filter for metadata values.
at line 154
query_builder
join(string $table, string $alias, string $on, string $type = 'INNER')
Add a generic JOIN clause.
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.
at line 181
query_builder
join_course(string $alias = 'c', string $local_field = 'courseid', string $foreign_field = 'id')
Join against Moodle course table.
at line 193
query_builder
join_user(string $alias = 'u', string $local_field = 'userid', string $foreign_field = 'id')
Join against Moodle user table.
at line 209
query_builder
with_metadata(array $keys)
Request eager-loading of specific metadata keys.
at line 223
query_builder
with_relation(string $relation)
Request eager-loading of a registered relation.
at line 243
query_builder
without_global_scope(string $identifier)
Disable a specific global scope.
at line 255
query_builder
without_global_scopes()
Disable all global scopes.
at line 269
query_builder
select(array $fields)
Define explicit SELECT columns.
at line 279
query_builder
order_by(string $sort)
Define ORDER BY clause (raw string, e.g., "fullname ASC").
at line 289
query_builder
as_std_class(bool $enabled = true)
Toggle returning stdClass instead of domain entities.
at line 301
query_builder
domain(string $class)
Set the target domain class for hydration.
at line 315
query_builder
paginate(int $page, int $per_page)
Enable pagination with page and per-page values.
at line 326
query_builder
limit(int $limit)
Limit the number of returned rows (no pagination metadata).
at line 341
array
get_wheres()
Get base WHERE filters.
at line 351
array
get_meta_wheres()
Get metadata WHERE filters.
at line 361
array
get_joins()
Get JOIN definitions.
at line 371
array
get_relations()
Get requested relations for eager loading.
at line 381
array
get_metadata_keys()
Get metadata keys requested for eager loading.
at line 391
array
get_excluded_scopes()
Get excluded global scopes.
at line 401
array|null
get_select()
Get explicit select columns if defined.
at line 409
string|null
get_sort()
Get ORDER BY clause string.
at line 417
bool
wants_std_class()
Check if results should be hydrated as stdClass.
at line 425
int|null
get_page()
Get current page for pagination (0-based).
at line 433
int|null
get_per_page()
Get per-page limit for pagination.
at line 443
string
get_domain_class()
Get the target domain class for hydration.