Yoast\WP\Lib
ORM::add_join_source
Add a JOIN source to the query. Internal method.
The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN.
The table should be the name of the table to join to.
The constraint may be either a string or an array with three elements. If it is a string, it will be compiled into the query as-is, with no escaping. The recommended way to supply the constraint is as an array with three elements:
first_column, operator, second_column
Example: array('user.id', '=', 'profile.user_id')
will compile to
ON user.id = profile.user_id
The final (optional) argument specifies an alias for the joined table.
Метод класса: ORM{}
Хуков нет.
Возвращает
ORM.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->add_join_source( $join_operator, $table, $constraint, $table_alias );
- $join_operator(строка) (обязательный)
- The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN.
- $table(строка) (обязательный)
- The table should be the name of the table to join to.
- $constraint(строка) (обязательный)
- The constraint.
- $table_alias(строка|null)
- The alias for the joined table.
По умолчанию: null
Код ORM::add_join_source() ORM::add join source Yoast 26.7
protected function add_join_source( $join_operator, $table, $constraint, $table_alias = null ) {
$join_operator = \trim( "{$join_operator} JOIN" );
$table = $this->quote_identifier( $table );
// Add table alias if present.
if ( $table_alias !== null ) {
$table_alias = $this->quote_identifier( $table_alias );
$table .= " {$table_alias}";
}
// Build the constraint.
if ( \is_array( $constraint ) ) {
list( $first_column, $operator, $second_column ) = $constraint;
$first_column = $this->quote_identifier( $first_column );
$second_column = $this->quote_identifier( $second_column );
$constraint = "{$first_column} {$operator} {$second_column}";
}
$this->join_sources[] = "{$join_operator} {$table} ON {$constraint}";
return $this;
}