Join trait

Framework\Database\Manipulation\Traits\Join

Trait Join.

Defined in libraries/database/src/Manipulation/Traits/Join.php

Methods #

crossJoin()
Adds a JOIN clause with "CROSS JOIN $table".
crossJoinOn()
Adds a JOIN clause with "CROSS JOIN $table ON $conditional".
crossJoinUsing()
Adds a JOIN clause with "CROSS JOIN $table USING ...$columns".
from()
Sets the FROM clause.
innerJoinOn()
Adds a JOIN clause with "INNER JOIN $table ON $conditional".
innerJoinUsing()
Adds a JOIN clause with "INNER JOIN $table USING ...$columns".
join()
Adds a JOIN clause with "$type JOIN $table $clause $conditional".
joinOn()
Adds a JOIN clause with "JOIN $table ON $conditional".
joinUsing()
Adds a JOIN clause with "JOIN $table USING ...$columns".
leftJoinOn()
Adds a JOIN clause with "LEFT JOIN $table ON $conditional".
leftJoinUsing()
Adds a JOIN clause with "LEFT JOIN $table USING ...$columns".
leftOuterJoinOn()
Adds a JOIN clause with "LEFT OUTER JOIN $table ON $conditional".
leftOuterJoinUsing()
Adds a JOIN clause with "LEFT OUTER JOIN $table USING ...$columns".
naturalJoin()
Adds a JOIN clause with "NATURAL JOIN $table".
naturalLeftJoin()
Adds a JOIN clause with "NATURAL LEFT JOIN $table".
naturalLeftOuterJoin()
Adds a JOIN clause with "NATURAL LEFT OUTER JOIN $table".
naturalRightJoin()
Adds a JOIN clause with "NATURAL RIGHT JOIN $table".
naturalRightOuterJoin()
Adds a JOIN clause with "NATURAL RIGHT OUTER JOIN $table".
rightJoinOn()
Adds a JOIN clause with "RIGHT JOIN $table ON $conditional".
rightJoinUsing()
Adds a JOIN clause with "RIGHT JOIN $table USING ...$columns".
rightOuterJoinOn()
Adds a JOIN clause with "RIGHT OUTER JOIN $table ON $conditional".
rightOuterJoinUsing()
Adds a JOIN clause with "RIGHT OUTER JOIN $table USING ...$columns".
hasFrom()
Tells if the FROM clause was set.
renderFrom()
Renders the FROM clause.
renderJoin()
Renders the JOIN clause.
checkNaturalJoinType()
Check if a JOIN type belongs to the NATURAL group.
renderJoinConditionClause()
Validates and renders the JOIN condition clause.
renderJoinConditionExpression()
Renders the JOIN condition expression.
renderJoinConditional()
Renders the JOIN conditional part.
renderJoinType()
Validates and renders the JOIN type.
setJoin()
Sets the JOIN clause.

crossJoin()

public function crossJoin(Closure|array|string $table): static

Adds a JOIN clause with "CROSS JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

crossJoinOn()

public function crossJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "CROSS JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

crossJoinUsing()

public function crossJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "CROSS JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

from()

public function from(Closure|array|string $reference, Closure|array|string ...$references): static

Sets the FROM clause.

Parameters
  • Closure|array|string $reference - Table reference
  • Closure|array|string $references
Returns static

innerJoinOn()

public function innerJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "INNER JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

innerJoinUsing()

public function innerJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "INNER JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

join()

public function join(Closure|array|string $table, string $type = '', ?string $clause = NULL, Closure|array|null $conditional = NULL): static

Adds a JOIN clause with "$type JOIN $table $clause $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • string $type - JOIN type. One of: `CROSS`, `INNER`, `LEFT`, `LEFT OUTER`, `RIGHT`, `RIGHT OUTER`, `NATURAL`, `NATURAL LEFT`, `NATURAL LEFT OUTER`, `NATURAL RIGHT`, `NATURAL RIGHT OUTER` or empty (same as `INNER`)
  • ?string $clause - Condition clause. Null if it has a NATURAL type, otherwise `ON` or `USING`
  • Closure|array|null $conditional - A conditional expression as Closure or the columns list as array
Returns static

joinOn()

public function joinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

joinUsing()

public function joinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

leftJoinOn()

public function leftJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "LEFT JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

leftJoinUsing()

public function leftJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "LEFT JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

leftOuterJoinOn()

public function leftOuterJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "LEFT OUTER JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

leftOuterJoinUsing()

public function leftOuterJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "LEFT OUTER JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

naturalJoin()

public function naturalJoin(Closure|array|string $table): static

Adds a JOIN clause with "NATURAL JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

naturalLeftJoin()

public function naturalLeftJoin(Closure|array|string $table): static

Adds a JOIN clause with "NATURAL LEFT JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

naturalLeftOuterJoin()

public function naturalLeftOuterJoin(Closure|array|string $table): static

Adds a JOIN clause with "NATURAL LEFT OUTER JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

naturalRightJoin()

public function naturalRightJoin(Closure|array|string $table): static

Adds a JOIN clause with "NATURAL RIGHT JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

naturalRightOuterJoin()

public function naturalRightOuterJoin(Closure|array|string $table): static

Adds a JOIN clause with "NATURAL RIGHT OUTER JOIN $table".

Parameters
  • Closure|array|string $table - Table factor
Returns static

rightJoinOn()

public function rightJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "RIGHT JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

rightJoinUsing()

public function rightJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "RIGHT JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

rightOuterJoinOn()

public function rightOuterJoinOn(Closure|array|string $table, Closure $conditional): static

Adds a JOIN clause with "RIGHT OUTER JOIN $table ON $conditional".

Parameters
  • Closure|array|string $table - Table factor
  • Closure $conditional - Conditional expression
Returns static

rightOuterJoinUsing()

public function rightOuterJoinUsing(Closure|array|string $table, Closure|string ...$columns): static

Adds a JOIN clause with "RIGHT OUTER JOIN $table USING ...$columns".

Parameters
  • Closure|array|string $table - Table factor
  • Closure|string $columns
Returns static

hasFrom()

protected function hasFrom(?string $clause = NULL): bool

Tells if the FROM clause was set.

Parameters
  • ?string $clause - A clause where FROM is required
Returns bool - True if it has FROM, otherwise false
throws
LogicException if FROM is not set, but is required for some other clause

renderFrom()

protected function renderFrom(): ?string

Renders the FROM clause.

Returns ?string - The FROM clause or null if it was not set

renderJoin()

protected function renderJoin(): ?string

Renders the JOIN clause.

Returns ?string - The JOIN clause or null if it was not set

checkNaturalJoinType()

private function checkNaturalJoinType(string $type, ?string $clause, Closure|array|null $expression): bool

Check if a JOIN type belongs to the NATURAL group.

Parameters
  • string $type - `NATURAL`, `NATURAL LEFT`, `NATURAL LEFT OUTER`, `NATURAL RIGHT`, `NATURAL RIGHT OUTER` or any other non-natural
  • ?string $clause - Must be null if type is natural
  • Closure|array|null $expression - Must be null if type is natural
Returns bool - True if the type is natural, otherwise false
throws
InvalidArgumentException if $type is natural and has clause or expression

renderJoinConditionClause()

private function renderJoinConditionClause(?string $clause): ?string

Validates and renders the JOIN condition clause.

Parameters
  • ?string $clause - `ON`, `USING` or null for none
Returns ?string - The condition clause or none
throws
InvalidArgumentException for invalid condition clause

renderJoinConditionExpression()

private function renderJoinConditionExpression(?string $clause, Closure|array|null $expression): ?string

Renders the JOIN condition expression.

Parameters
  • ?string $clause - `ON`or null
  • Closure|array|null $expression - Column(s) or subquery(ies)
Returns ?string - The condition or null if $clause is null

renderJoinConditional()

private function renderJoinConditional(string $type, Closure|array|string $table, ?string $clause, Closure|array|null $expression): string

Renders the JOIN conditional part.

Parameters
  • string $type - ``, `CROSS`,`INNER`, `LEFT`, `LEFT OUTER`, `RIGHT`, `RIGHT OUTER`, `NATURAL`, `NATURAL LEFT`, `NATURAL LEFT OUTER`, `NATURAL RIGHT` or `NATURAL RIGHT OUTER`
  • Closure|array|string $table - The table name
  • ?string $clause - `ON`, `USING` or null for none
  • Closure|array|null $expression - Column(s) or subquery(ies)
Returns string - The JOIN conditional part

renderJoinType()

private function renderJoinType(string $type): string

Validates and renders the JOIN type.

Parameters
  • string $type - ``, `CROSS`,`INNER`, `LEFT`, `LEFT OUTER`, `RIGHT`, `RIGHT OUTER`, `NATURAL`, `NATURAL LEFT`, `NATURAL LEFT OUTER`, `NATURAL RIGHT` or `NATURAL RIGHT OUTER`
Returns string - The input ype
throws
InvalidArgumentException for invalid type

setJoin()

private function setJoin(Closure|array|string $table, string $type, ?string $clause = NULL, Closure|array|null $expression = NULL): static

Sets the JOIN clause.

Parameters
  • Closure|array|string $table - The table factor
  • string $type - ``, `CROSS`, `INNER`, `LEFT`, `LEFT OUTER`, `RIGHT`, `RIGHT OUTER`, `NATURAL`, `NATURAL LEFT`, `NATURAL LEFT OUTER`, `NATURAL RIGHT` or `NATURAL RIGHT OUTER`
  • ?string $clause - `ON`, `USING` or null for none
  • Closure|array|null $expression - Column(s) or subquery(ies)
Returns static