You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.3 KiB
PHP

<?php
/**
* The joins functions.
*
* @since 1.0.0
* @package RankMath
* @subpackage RankMath\Admin\Database
* @author RankMath <support@rankmath.com>
*/
namespace RankMath\Admin\Database;
/**
* Joins class.
*/
trait Joins {
/**
* Generate left join clause.
*
* @param string $table The SQL table.
* @param mixed $column1 The SQL Column.
* @param mixed $column2 The SQL Column.
* @param string $operator The Operator.
* @param string $alias The table alias.
*
* @return self The current query builder.
*/
public function leftJoin( $table, $column1, $column2, $operator = '=', $alias = '' ) { // @codingStandardsIgnoreLine
if ( empty( $table ) || empty( $column1 ) || empty( $column2 ) ) {
return $this;
}
if ( ! empty( $alias ) ) {
$table = "{$table} AS {$alias}";
}
$this->add_sql_clause( 'left_join', "LEFT JOIN {$table} ON {$column1} {$operator} {$column2}" );
return $this;
}
/**
* Generate right join clause.
*
* @param string $table The SQL table.
* @param mixed $column1 The SQL Column.
* @param mixed $column2 The SQL Column.
* @param string $operator The Operator.
* @param string $alias The table alias.
*
* @return self The current query builder.
*/
public function rightJoin( $table, $column1, $column2, $operator = '=', $alias = '' ) { // @codingStandardsIgnoreLine
if ( empty( $table ) || empty( $column1 ) || empty( $column2 ) ) {
return $this;
}
if ( ! empty( $alias ) ) {
$table = "{$table} AS {$alias}";
}
$this->add_sql_clause( 'right_join', "RIGHT JOIN {$table} ON {$column1} {$operator} {$column2}" );
return $this;
}
/**
* Generate left join clause.
*
* @param string $table The SQL table.
* @param mixed $column1 The SQL Column.
* @param mixed $column2 The SQL Column.
* @param string $operator The Operator.
* @param string $alias The table alias.
*
* @return self The current query builder.
*/
public function join( $table, $column1, $column2, $operator = '=', $alias = '' ) { // @codingStandardsIgnoreLine
if ( empty( $table ) || empty( $column1 ) || empty( $column2 ) ) {
return $this;
}
if ( ! empty( $alias ) ) {
$table = "{$table} AS {$alias}";
}
$this->add_sql_clause( 'join', "JOIN {$table} ON {$column1} {$operator} {$column2}" );
return $this;
}
}