Automattic\WooCommerce\Internal\Admin\Reports
HposLegacyOrderReportQueryBuilder::build_where_meta_joins
Build the JOINs required to satisfy a where_meta predicate.
Method of the class: HposLegacyOrderReportQueryBuilder{}
No Hooks.
Returns
array<string,string>. JOINs keyed by alias.
Usage
// private - for code of main (parent) class only $result = $this->build_where_meta_joins( $value );
- $value(array) (required)
- A
where_metarow.
HposLegacyOrderReportQueryBuilder::build_where_meta_joins() HposLegacyOrderReportQueryBuilder::build where meta joins code WC 11.1.2
private function build_where_meta_joins( $value ) {
$type = $value['type'] ?? '';
$join_type = $value['join_type'] ?? 'INNER';
$meta_key = $value['meta_key'];
$key = sanitize_key( is_array( $meta_key ) ? $meta_key[0] . '_array' : $meta_key );
if ( 'order_item_meta' === $type ) {
global $wpdb;
$alias = "order_item_meta_{$key}";
return array(
'order_items' => "{$join_type} JOIN {$wpdb->prefix}woocommerce_order_items AS order_items ON orders.id = order_items.order_id",
$alias => "{$join_type} JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS {$alias} ON order_items.order_item_id = {$alias}.order_item_id",
);
}
$schema = $this->get_report_schema();
if ( ! is_array( $meta_key ) && isset( $schema['where_meta_column'][ $meta_key ] ) ) {
return array();
}
if ( ! is_array( $meta_key ) && isset( $schema['address_column'][ $meta_key ] ) ) {
return $this->build_address_join( $schema['address_column'][ $meta_key ][0] );
}
$alias = "meta_{$key}";
return array( $alias => "{$join_type} JOIN " . OrderUtil::get_table_for_order_meta() . " AS {$alias} ON orders.id = {$alias}.order_id" );
}