QueryBuilder
- Full name:
\Qubus\Expressive\QueryBuilder
- This class implements:
\IteratorAggregate
,\Stringable
,\Qubus\Expressive\Database
Constants
Constant | Visibility | Type | Value |
---|---|---|---|
OPERATOR_AND | public | ' AND ' | |
OPERATOR_OR | public | ' OR ' | |
ORDERBY_ASC | public | 'ASC' | |
ORDERBY_DESC | public | 'DESC' | |
JOIN_INNER | public | 'INNER' | |
JOIN_OUTER | public | 'OUTER' | |
JOIN_LEFT | public | 'LEFT' | |
JOIN_RIGHT | public | 'RIGHT' | |
JOIN_RIGHT_OUTER | public | 'RIGHT OUTER' | |
JOIN_LEFT_OUTER | public | 'LEFT OUTER' | |
EOL | public | "\n" | |
TAB | public | "\t" | |
EOL_TAB | public | "\n\t" |
Properties
instance
- This property is static.
connection
tableName
tableToken
tableAlias
isSingle
pdoStmt
selectFields
joinSources
limit
offset
orderBy
groupBy
whereParameters
whereConditions
andOrOperator
having
returning
upsert
wrapOpen
lastWrapPosition
isFluentQuery
pdoExecuted
data
debugSqlQuery
sqlQuery
sqlParameters
dirtyFields
referenceKeys
joinOn
references
- This property is static.
tablePrefix
schema
tableStructure
Methods
__construct
Constructor & set the table structure
public __construct(\Qubus\Expressive\Connection $connection, string|null $tablePrefix = null, string $primaryKeyName = 'id', string $foreignKeyName = '%s_id'): mixed
Parameters:
Parameter | Type | Description |
---|---|---|
$connection | \Qubus\Expressive\Connection | Database connection. |
$tablePrefix | string|null | Prefix of database tables. |
$primaryKeyName | string | Structure: table primary key. If it's an array, it must be the structure |
$foreignKeyName | string | Structure: table foreignKeyName. It can be like %s_id where %s is the table name |
fromInstance
public static fromInstance(\Qubus\Expressive\Connection $connection, string $primaryKeyName = 'id', ?string $tablePrefix = null): static
- This method is static.
Parameters:
Parameter | Type | Description |
---|---|---|
$connection | \Qubus\Expressive\Connection | |
$primaryKeyName | string | |
$tablePrefix | ?string |
table
Define the working table and create a new instance
Parameters:
Parameter | Type | Description |
---|---|---|
$tableName | string | Table name. |
$alias | ?string | The table alias name. |
getTableName
Return the name of the table.
setTableAlias
Set the table alias.
Parameters:
Parameter | Type | Description |
---|---|---|
$alias | string |
getTableAlias
Get table Alias
setStructure
public setStructure(string $primaryKeyName = 'id', string $foreignKeyName = '%s_id'): \Qubus\Expressive\Database
Parameters:
Parameter | Type | Description |
---|---|---|
$primaryKeyName | string | The primary key, ie: id |
$foreignKeyName | string | The foreign key as a pattern: %s_id, where %s will be substituted with the table name |
setTablePrefix
Parameters:
Parameter | Type | Description |
---|---|---|
$tablePrefix | ?string |
getTablePrefix
Return the table prefix.
getStructure
Return the table structure.
getPrimaryKeyname
Get the primary key name.
getForeignKeyname
Get foreign key name.
isSingleRow
Return if the entry is of a single row
query
To execute a raw query
public query(string $query, array $parameters = [], bool $returnAsPdoStmt = false): \Qubus\Expressive\Database|\PDOStatement
Parameters:
Parameter | Type | Description |
---|---|---|
$query | string | |
$parameters | array | |
$returnAsPdoStmt | bool | True, it will return the PDOStatement false, it will return $this, which can be used for chaining or access the properties of the results. |
rowCount
Return the number of affected row by the last statement
find
To find all rows and create their instances Use the query builder to build the where clause or $this->query with select If a callback function is provided, the 1st arg must accept the rows results
public find(?callable $callback = null): bool|\SplFixedArray|string|\ArrayIterator|\InternalIterator|array
Parameters:
Parameter | Type | Description |
---|---|---|
$callback | ?callable | Run a function on the returned rows |
findOne
Return one row
Parameters:
Parameter | Type | Description |
---|---|---|
$id | int|string|null | Use to fetch by primary key. |
getIterator
This method allow the iteration inside foreach().
fromArray
Create an instance from the given row (an associative array of data fetched from the database).
Parameters:
Parameter | Type | Description |
---|---|---|
$data | array |
select
Create the select clause.
Parameters:
Parameter | Type | Description |
---|---|---|
$columns | mixed | The column(s) to select. Can be string or array of fields. |
$alias | ?string | An alias to the column. |
where
Add where condition, more calls appends with AND.
Parameters:
Parameter | Type | Description |
---|---|---|
$condition | mixed | condition possibly containing ? or :name |
$parameters | mixed | array accepted by PDOStatement::execute or a scalar value. |
and
Create an AND operator in the where clause
or
Create an OR operator in the where clause
wrap
To group multiple where clauses together.
wherePK
Where Primary key
Parameters:
Parameter | Type | Description |
---|---|---|
$id | int|string |
whereNot
WHERE $columName != $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereLike
WHERE $columName LIKE $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereNotLike
WHERE $columName NOT LIKE $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereGt
WHERE $columName > $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereGte
WHERE $columName >= $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereLt
WHERE $columName < $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereLte
WHERE $columName <= $value
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$value | mixed |
whereIn
WHERE $columName IN (?,?,?,...)
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$values | array |
whereNotIn
WHERE $columName NOT IN (?,?,?,...)
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | |
$values | array |
whereNull
WHERE $columName IS NULL
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string |
whereNotNull
WHERE $columName IS NOT NULL
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string |
having
Parameters:
Parameter | Type | Description |
---|---|---|
$statement | mixed | |
$operator | mixed |
orderBy
ORDER BY $columnName (ASC | DESC)
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string | - The name of the colum or an expression |
$ordering | string | (DESC | ASC) |
groupBy
GROUP BY $columnName
Parameters:
Parameter | Type | Description |
---|---|---|
$columnName | string |
limit
LIMIT $limit
Parameters:
Parameter | Type | Description |
---|---|---|
$limit | int|null |
offset
OFFSET $offset
Parameters:
Parameter | Type | Description |
---|---|---|
$offset | int|null |
pagination
Parameters:
Parameter | Type | Description |
---|---|---|
$perPage | int | |
$page | int |
join
Build a join
public join(string $tableName, string $constraint, string $tableAlias = '', string $joinOperator = self::JOIN_LEFT): \Qubus\Expressive\QueryBuilder
Parameters:
Parameter | Type | Description |
---|---|---|
$tableName | string | |
$constraint | string | -> id = profile.user_id |
$tableAlias | string | - The alias of the table name |
$joinOperator | string | - LEFT | INNER | etc... |
on
An alias to join by using a QueryBuilder instance.
public on(\Qubus\Expressive\QueryBuilder $query, string $joinOperator = self::JOIN_LEFT): \Qubus\Expressive\QueryBuilder
The QueryBuilder instance may have select and where statement for the ON clause
Parameters:
Parameter | Type | Description |
---|---|---|
$query | \Qubus\Expressive\QueryBuilder | |
$joinOperator | string |
getSelectQuery
Return the built select query
schema
The associated schema instance.
getSelectString
Get the select fields as string for SQL.
getSelectFields
Return the select fields as array.
getJoinString
Get a JOIN string.
getGroupbyString
Get the group by string.
getOrderbyString
Get the order by string.
getWhereString
Build the WHERE clause(s).
getJoinOnString
Create the JOIN ... ON string when there is a join. It will be called by on().
getHavingString
Return the HAVING clause.
getWhereParameters
Return the values to be bound for where.
setSingleWhere
Detect if it's a single row instance and reset it to PK.
resetWhere
Reset the where.
returning
Parameters:
Parameter | Type | Description |
---|---|---|
$cols | string |
upsert
Parameters:
Parameter | Type | Description |
---|---|---|
$conflictCols | array | |
$updateData | array |
lastInsertId
Retrieves the ID of the last record inserted.
Parameters:
Parameter | Type | Description |
---|---|---|
$pk | string|null |
insert
Insert new rows $data can be 2-dimensional to add a bulk insert If a single row is inserted, it will return its row instance
Parameters:
Parameter | Type | Description |
---|---|---|
$data | array | - data to populate |
update
Update entries Use the query builder to create the where clause.
Parameters:
Parameter | Type | Description |
---|---|---|
$data | ?array | the data to update |
delete
Delete rows.
Parameters:
Parameter | Type | Description |
---|---|---|
$deleteAll | bool | When there is no where condition, setting to true will delete all. |
beginTransaction
Initiates a transaction.
inTransaction
Checks if inside transaction.
commit
Commits a transaction
rollBack
Rolls back a transaction.
transactional
Run transactional queries.
Parameters:
Parameter | Type | Description |
---|---|---|
$callback | \Closure | transaction callback |
$that | mixed | |
$default | mixed |
set
To set data for update or insert $key can be an array for mass set
Parameters:
Parameter | Type | Description |
---|---|---|
$key | mixed | |
$value | mixed|null |
save
Save, a shortcut to update() or insert().
count
Return the aggregate count of column
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string|null | - the column name |
max
Return the aggregate max count of column
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string | - the column name |
min
Return the aggregate min count of column
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string | - the column name |
sum
Return the aggregate sum count of column
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string | - the column name |
avg
Return the aggregate average count of column
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string | - the column name |
aggregate
Parameters:
Parameter | Type | Description |
---|---|---|
$fn | string | - The function to use for the aggregation |
getPK
Return the primary key.
get
Get the key
Parameters:
Parameter | Type | Description |
---|---|---|
$key | string |
toArray
Return the raw data of this single instance.
__get
Parameters:
Parameter | Type | Description |
---|---|---|
$key | mixed |
__set
Parameters:
Parameter | Type | Description |
---|---|---|
$key | mixed | |
$value | mixed |
__isset
Parameters:
Parameter | Type | Description |
---|---|---|
$key | mixed |
__call
Association / Load
__call() will load a table by association or return the table object itself
To dynamically call a table
$db = new QueryBuilder($myPDO); on table 'users' $Users = $db->table("users");
Or to call a table association on table 'photos' where users can have many photos $allMyPhotos = $Users->findOne(1234)->photos();
Association allow you to associate the current table with another by using foreignKey and localKey. The data is eagerly loaded hence only making one round to the table to retrieve the data matching the foreign and protected keys foreign and protected keys are cached for subsequent queries, the keys are selected based on the foreignKeyname pattern. i.e: having the keys: id, user_id, friend_id, name, last_name id, user_id, friend_id will be cached so they can be queried upon request
Parameters:
Parameter | Type | Description |
---|---|---|
$tablename | string | |
$args | array | foreignKey localKey where sort callback model backref |
reset
Reset fields
now
Return an Immutable YYYY-MM-DD HH:II:SS date format
- This method is static.
Parameters:
Parameter | Type | Description |
---|---|---|
$datetime | string | - An english textual datetime description now, yesterday, 3 days ago, +1 week http://php.net/manual/en/function.strtotime.php |
Return Value:
YYYY-MM-DD HH:II:SS
Throws:
debugSqlQuery
To debug the query. It will not execute it but instead using debugSqlQuery() and getSqlParameters to get the data
Parameters:
Parameter | Type | Description |
---|---|---|
$bool | bool |
getSqlQuery
Get the SQL Query with
getSqlParameters
Return the parameters of the SQL
__clone
__toString
makePlaceholders
Return a string containing the given number of question marks, separated by commas. Eg "?, ?, ?"
Parameters:
Parameter | Type | Description |
---|---|---|
$numberOfPlaceholders | int | - total of placeholder to insert. |
formatKeyname
Format the table{Primary|Foreign}KeyName
Parameters:
Parameter | Type | Description |
---|---|---|
$pattern | string | |
$tablename | string |
tokenize
To create a string that will be used as key for the relationship.
Parameters:
Parameter | Type | Description |
---|---|---|
$key | string | |
$suffix | string |
isArrayMultiDim
Check if array is multi dim.
Parameters:
Parameter | Type | Description |
---|---|---|
$data | array |
prepareColumns
Prepare columns to include the table alias name.
Parameters:
Parameter | Type | Description |
---|---|---|
$columns | array |
prepareColumn
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string |
formatColumnName
Format a column name to add to the table alias.
Parameters:
Parameter | Type | Description |
---|---|---|
$column | string |
Automatically generated on 2025-10-13