Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableDataStore::querypublicWC 1.0

Performs actual query to get orders. Uses OrdersTableQuery to build and generate the query.

Method of the class: OrdersTableDataStore{}

Returns

Array|Object. List of orders and count of orders.

Usage

$OrdersTableDataStore = new OrdersTableDataStore();
$OrdersTableDataStore->query( $query_vars );
$query_vars(array) (required)
Query variables.

OrdersTableDataStore::query() code WC 10.7.0

public function query( $query_vars ) {
	if ( ! isset( $query_vars['paginate'] ) || ! $query_vars['paginate'] ) {
		$query_vars['no_found_rows'] = true;
	}

	if ( isset( $query_vars['anonymized'] ) ) {
		$query_vars['meta_query'] = $query_vars['meta_query'] ?? array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query

		if ( $query_vars['anonymized'] ) {
			$query_vars['meta_query'][] = array(
				'key'   => '_anonymized',
				'value' => 'yes',
			);
		} else {
			$query_vars['meta_query'][] = array(
				'key'     => '_anonymized',
				'compare' => 'NOT EXISTS',
			);
		}
	}

	// Handle fulfillment status filtering.
	if ( ! empty( $query_vars['fulfillment_status'] ) ) {
		$query_vars['meta_query'][] = FulfillmentUtils::get_order_fulfillment_status_meta_query( $query_vars['fulfillment_status'] );
	}

	/**
	 * Filter the query args before executing the query.
	 *
	 * @param array $query_vars The query vars.
	 * @return array
	 * @since 10.4.0
	 */
	$query_vars = apply_filters( 'woocommerce_orders_table_datastore_get_orders_query', $query_vars, $this );

	try {
		$query = new OrdersTableQuery( $query_vars );
	} catch ( \Exception $e ) {
		$query = (object) array(
			'orders'        => array(),
			'found_orders'  => 0,
			'max_num_pages' => 0,
		);
	}

	if ( isset( $query_vars['return'] ) && 'ids' === $query_vars['return'] ) {
		$orders = $query->orders;
	} else {
		$orders = WC()->order_factory->get_orders( $query->orders );
		$this->prime_caches_for_orders( $query->orders, $query_vars );
	}

	if ( isset( $query_vars['paginate'] ) && $query_vars['paginate'] ) {
		return (object) array(
			'orders'        => $orders,
			'total'         => $query->found_orders,
			'max_num_pages' => $query->max_num_pages,
		);
	}

	return $orders;
}