Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableMetaQuery::find_or_create_table_alias_for_clause()
Finds a common table alias that the meta_query clause can use, or creates one.
Method of the class: OrdersTableMetaQuery{}
No Hooks.
Return
String
. A table alias for use in an SQL JOIN clause.
Usage
// private - for code of main (parent) class only $result = $this->find_or_create_table_alias_for_clause( $clause, $parent_query ): string;
- $clause(array) (required)
- An atomic meta_query clause.
- $parent_query(array) (required)
- The parent query this clause is in.
OrdersTableMetaQuery::find_or_create_table_alias_for_clause() OrdersTableMetaQuery::find or create table alias for clause code WC 8.7.0
private function find_or_create_table_alias_for_clause( array $clause, array $parent_query ): string { if ( ! empty( $clause['alias'] ) ) { return $clause['alias']; } $alias = false; $siblings = array_filter( $parent_query, array( __CLASS__, 'is_atomic' ) ); foreach ( $siblings as $sibling ) { if ( empty( $sibling['alias'] ) ) { continue; } if ( $this->is_operator_compatible_with_shared_join( $clause, $sibling, $parent_query['relation'] ?? 'AND' ) ) { $alias = $sibling['alias']; break; } } if ( ! $alias ) { $alias = self::ALIAS_PREFIX . count( $this->table_aliases ); $this->join[] = $this->generate_join_for_clause( $clause, $alias ); $this->table_aliases[] = $alias; } return $alias; }