81 $expr = $clause->
prepare($this, $alias);
82 if ($clause instanceof
WhereClause && ($expr instanceof CompositeExpression || is_string($expr))) {
83 $this->andWhere($expr);
102 if (strpos(
$table, $prefix) !== 0) {
103 return "{$prefix}{$table}";
138 $parameters = $this->getParameters();
139 $key =
":qb" . (count($parameters) + 1);
144 $type = Connection::PARAM_INT_ARRAY;
146 $type = Connection::PARAM_STR_ARRAY;
160 public function execute(
bool $track_query =
true) {
163 return parent::execute();
167 return parent::execute();
177 $this->table_name =
$table;
178 $this->table_alias = $alias;
189 $this->table_name = $insert;
200 $this->table_name =
$table;
201 $this->table_alias = $alias;
211 public function delete(
$table = null, $alias = null) {
212 $this->table_name =
$table;
213 $this->table_alias = $alias;
221 public function join($fromAlias, $join, $alias, $condition = null) {
222 return parent::join($fromAlias, $this->
prefix($join), $alias, $condition);
228 public function innerJoin($fromAlias, $join, $alias, $condition = null) {
229 return parent::innerJoin($fromAlias, $this->
prefix($join), $alias, $condition);
235 public function leftJoin($fromAlias, $join, $alias, $condition = null) {
236 return parent::leftJoin($fromAlias, $this->
prefix($join), $alias, $condition);
242 public function rightJoin($fromAlias, $join, $alias, $condition = null) {
243 return parent::rightJoin($fromAlias, $this->
prefix($join), $alias, $condition);
254 public function merge($parts = null, $boolean =
'AND') {
259 $parts = (array) $parts;
261 $parts = array_filter($parts,
function ($e) {
265 if (!$e instanceof CompositeExpression && !is_string($e)) {
275 if (count($parts) === 1) {
276 return array_shift($parts);
279 if (strtoupper($boolean) ===
'OR') {
280 return $this->expr()->orX()->addMultiple($parts);
282 return $this->expr()->andX()->addMultiple($parts);
302 public function compare($x, $comparison, $y = null,
$type = null, $case_sensitive = null) {
315 public function between($x, $lower = null, $upper = null,
$type = null) {
324 return $this->
merge($wheres);
334 return "qbt{$this->join_index}";
347 public function joinEntitiesTable($from_alias =
'', $from_column =
'guid', $join_type =
'inner', $joined_alias = null) {
348 if (in_array($joined_alias, $this->joins)) {
349 return $joined_alias;
353 $from_column =
"$from_alias.$from_column";
356 $hash = sha1(serialize([
358 self::TABLE_ENTITIES,
362 if (!isset($joined_alias) && !empty($this->joins[$hash])) {
363 return $this->joins[$hash];
366 $condition =
function (
QueryBuilder $qb, $joined_alias) use ($from_column) {
367 return $qb->
compare(
"$joined_alias.guid",
'=', $from_column);
370 $clause =
new JoinClause(self::TABLE_ENTITIES, $joined_alias, $condition, $join_type);
371 $joined_alias = $clause->prepare($this, $from_alias);
373 $this->joins[$hash] = $joined_alias;
375 return $joined_alias;
389 public function joinMetadataTable($from_alias =
'', $from_column =
'guid',
$name = null, $join_type =
'inner', $joined_alias = null) {
390 if (in_array($joined_alias, $this->joins)) {
391 return $joined_alias;
395 $from_column =
"$from_alias.$from_column";
398 $hash = sha1(serialize([
400 self::TABLE_METADATA,
405 if (!isset($joined_alias) && !empty($this->joins[$hash])) {
406 return $this->joins[$hash];
409 $condition =
function (
QueryBuilder $qb, $joined_alias) use ($from_column, $name) {
411 $qb->
compare(
"$joined_alias.entity_guid",
'=', $from_column),
416 $clause =
new JoinClause(self::TABLE_METADATA, $joined_alias, $condition, $join_type);
418 $joined_alias = $clause->prepare($this, $from_alias);
420 $this->joins[$hash] = $joined_alias;
422 return $joined_alias;
436 public function joinAnnotationTable($from_alias =
'', $from_column =
'guid',
$name = null, $join_type =
'inner', $joined_alias = null) {
437 if (in_array($joined_alias, $this->joins)) {
438 return $joined_alias;
442 $from_column =
"$from_alias.$from_column";
445 $hash = sha1(serialize([
447 self::TABLE_ANNOTATIONS,
452 if (!isset($joined_alias) && !empty($this->joins[$hash])) {
453 return $this->joins[$hash];
456 $condition =
function (
QueryBuilder $qb, $joined_alias) use ($from_column, $name) {
458 $qb->
compare(
"$joined_alias.entity_guid",
'=', $from_column),
463 $clause =
new JoinClause(self::TABLE_ANNOTATIONS, $joined_alias, $condition, $join_type);
465 $joined_alias = $clause->prepare($this, $from_alias);
467 $this->joins[$hash] = $joined_alias;
469 return $joined_alias;
484 if (in_array($joined_alias, $this->joins)) {
485 return $joined_alias;
489 $from_column =
"$from_alias.$from_column";
492 $hash = sha1(serialize([
494 self::TABLE_PRIVATE_SETTINGS,
499 if (!isset($joined_alias) && !empty($this->joins[$hash])) {
500 return $this->joins[$hash];
503 $condition =
function (
QueryBuilder $qb, $joined_alias) use ($from_column, $name) {
505 $qb->
compare(
"$joined_alias.entity_guid",
'=', $from_column),
510 $clause =
new JoinClause(self::TABLE_PRIVATE_SETTINGS, $joined_alias, $condition, $join_type);
512 $joined_alias = $clause->prepare($this, $from_alias);
514 $this->joins[$hash] = $joined_alias;
516 return $joined_alias;
532 public function joinRelationshipTable($from_alias =
'', $from_column =
'guid',
$name = null, $inverse =
false, $join_type =
'inner', $joined_alias = null) {
533 if (in_array($joined_alias, $this->joins)) {
534 return $joined_alias;
538 $from_column =
"$from_alias.$from_column";
541 $hash = sha1(serialize([
543 self::TABLE_RELATIONSHIPS,
549 if (!isset($joined_alias) && !empty($this->joins[$hash])) {
550 return $this->joins[$hash];
553 $condition =
function (
QueryBuilder $qb, $joined_alias) use ($from_column, $name, $inverse) {
556 $parts[] = $qb->
compare(
"$joined_alias.guid_one",
'=', $from_column);
558 $parts[] = $qb->
compare(
"$joined_alias.guid_two",
'=', $from_column);
561 return $qb->
merge($parts);
564 $clause =
new JoinClause(self::TABLE_RELATIONSHIPS, $joined_alias, $condition, $join_type);
566 $joined_alias = $clause->prepare($this, $from_alias);
568 $this->joins[$hash] = $joined_alias;
570 return $joined_alias;
getTableName()
Returns the name of the primary table.
prefix($table)
Prefixes the table name with installation DB prefix.
Utility class for building composite comparison expression.
innerJoin($fromAlias, $join, $alias, $condition=null)
{}
if(!$user||!$user->canDelete()) $name
const ELGG_VALUE_INTEGER
Value types.
Extends QueryBuilder with JOIN clauses.
Database abstraction query builder.
joinEntitiesTable($from_alias= '', $from_column= 'guid', $join_type= 'inner', $joined_alias=null)
Join entity table from alias and return joined table alias.
rightJoin($fromAlias, $join, $alias, $condition=null)
{}
const TABLE_PRIVATE_SETTINGS
prepare(QueryBuilder $qb, $table_alias=null)
Build an expression and/or apply it to an instance of query builder.
between($x, $lower=null, $upper=null, $type=null)
Build a between clause.
addClause(Clause $clause, $alias=null)
Apply clause to this instance.
join($fromAlias, $join, $alias, $condition=null)
{}
const TABLE_RELATIONSHIPS
leftJoin($fromAlias, $join, $alias, $condition=null)
{}
compare($x, $comparison, $y=null, $type=null, $case_sensitive=null)
Build value comparison clause.
joinAnnotationTable($from_alias= '', $from_column= 'guid', $name=null, $join_type= 'inner', $joined_alias=null)
Join annotations table from alias and return joined table alias.
getNextJoinAlias()
Get an index of the next available join alias.
param($value, $type=null, $key=null)
Sets a new parameter assigning it a unique parameter key/name if none provided Returns the name of th...
subquery($table, $alias=null)
Creates a new SelectQueryBuilder for join/where subqueries using the DB connection of the primary Que...
if($container instanceof ElggGroup &&$container->guid!=elgg_get_page_owner_guid()) $key
Interface that allows resolving statements and/or extending query builder.
joinPrivateSettingsTable($from_alias= '', $from_column= 'guid', $name=null, $join_type= 'inner', $joined_alias=null)
Join private settings table from alias and return joined table alias.
getTableAlias()
Returns the alias of the primary table.
Builds a clause from closure or composite expression.
merge($parts=null, $boolean= 'AND')
Merges multiple composite expressions with a boolean.
getConnection($type)
Gets (if required, also creates) a DB connection.
elgg ElggPriorityList prototype insert
Inserts an element into the priority list at the priority specified.
execute(bool $track_query=true)
_elgg_services()
Get the global service provider.
joinMetadataTable($from_alias= '', $from_column= 'guid', $name=null, $join_type= 'inner', $joined_alias=null)
Join metadata table from alias and return joined table alias.
joinRelationshipTable($from_alias= '', $from_column= 'guid', $name=null, $inverse=false, $join_type= 'inner', $joined_alias=null)
Join relationship table from alias and return joined table alias.
from($table, $alias=null)
{}
Query builder for fetching data from the database.
update($table=null, $alias=null)
{}