diff options
author | Robin Appelman <robin@icewind.nl> | 2017-01-16 15:31:04 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2017-03-30 11:09:26 +0200 |
commit | 4279b13270630ec1d49e91f0d4a4cbefb915a32d (patch) | |
tree | 88fa25707e44ce4cafb56f342bd6d15bd20b4053 /lib/private/DB/QueryBuilder/QueryBuilder.php | |
parent | a65652fc1efe158bd097d573f012167cfcd26a62 (diff) | |
download | nextcloud-server-4279b13270630ec1d49e91f0d4a4cbefb915a32d.tar.gz nextcloud-server-4279b13270630ec1d49e91f0d4a4cbefb915a32d.zip |
Add function builder to the query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/DB/QueryBuilder/QueryBuilder.php')
-rw-r--r-- | lib/private/DB/QueryBuilder/QueryBuilder.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index a434140806e..3ff31de19a3 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -34,6 +34,8 @@ use OC\DB\QueryBuilder\ExpressionBuilder\OCIExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\PgSqlExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\SqliteExpressionBuilder; use OC\DB\QueryBuilder\FunctionBuilder\FunctionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\OCIFunctionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\PgSqlFunctionBuilder; use OC\DB\QueryBuilder\FunctionBuilder\SqliteFunctionBuilder; use OC\SystemConfig; use OCP\DB\QueryBuilder\IQueryBuilder; @@ -122,6 +124,34 @@ class QueryBuilder implements IQueryBuilder { } /** + * Gets an FunctionBuilder used for object-oriented construction of query functions. + * This producer method is intended for convenient inline usage. Example: + * + * <code> + * $qb = $conn->getQueryBuilder() + * ->select('u') + * ->from('users', 'u') + * ->where($qb->fun()->md5('u.id')); + * </code> + * + * For more complex function construction, consider storing the function + * builder object in a local variable. + * + * @return \OCP\DB\QueryBuilder\IFunctionBuilder + */ + public function fun() { + if ($this->connection instanceof OracleConnection) { + return new OCIFunctionBuilder($this->helper); + } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) { + return new SqliteFunctionBuilder($this->helper); + } else if ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) { + return new PgSqlFunctionBuilder($this->helper); + } else { + return new FunctionBuilder($this->helper); + } + } + + /** * Gets the type of the currently built query. * * @return integer |