Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableSearchQuery::maybe_get_join_for_products
Returns a prepared JOIN fragment for products when FTS is enabled.
Method of the class: OrdersTableSearchQuery{}
No Hooks.
Returns
String. JOIN clause or empty string if FTS disabled.
Usage
// private - for code of main (parent) class only $result = $this->maybe_get_join_for_products(): string;
Changelog
| Since 10.1.0 | Introduced. |
OrdersTableSearchQuery::maybe_get_join_for_products() OrdersTableSearchQuery::maybe get join for products code WC 10.3.6
private function maybe_get_join_for_products(): string {
global $wpdb;
$db_util = wc_get_container()->get( DatabaseUtil::class );
$items_table = $this->query->get_table_name( 'items' );
$orders_table = $this->query->get_table_name( 'orders' );
$fts_enabled = get_option( CustomOrdersTableController::HPOS_FTS_INDEX_OPTION ) === 'yes'
&& get_option( CustomOrdersTableController::HPOS_FTS_ORDER_ITEM_INDEX_CREATED_OPTION ) === 'yes';
if ( ! $fts_enabled ) {
return '';
}
$search_pattern = $wpdb->esc_like( $db_util->sanitise_boolean_fts_search_term( $this->search_term ) );
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
return $wpdb->prepare(
"LEFT JOIN (
SELECT DISTINCT order_id
FROM $items_table
WHERE MATCH ( order_item_name ) AGAINST ( %s IN BOOLEAN MODE )
) AS " . self::PRODUCTS_JOIN_ALIAS . ' ON ' . self::PRODUCTS_JOIN_ALIAS . ".order_id = $orders_table.id",
$search_pattern
);
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
// phpcs:enable WordPress.DB.PreparedSQL.NotPrepared
}