Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableQuery::build_count_query()
Build SQL query for counting total number of results.
Метод класса: OrdersTableQuery{}
Хуки из метода
Возвращает
null
. Ничего (null).
Использование
// private - только в коде основоного (родительского) класса $result = $this->build_count_query( $fields, $join, $where, $groupby );
- $fields(строка) (обязательный)
- Prepared fields for SELECT clause.
- $join(строка) (обязательный)
- Prepared JOIN clause.
- $where(строка) (обязательный)
- Prepared WHERE clause.
- $groupby(строка) (обязательный)
- Prepared GROUP BY clause.
Код OrdersTableQuery::build_count_query() OrdersTableQuery::build count query WC 9.8.2
private function build_count_query( $fields, $join, $where, $groupby ) { if ( ! isset( $this->sql ) || '' === $this->sql ) { wc_doing_it_wrong( __FUNCTION__, 'Count query can only be build after main query is built.', '7.3.0' ); } $orders_table = $this->tables['orders']; $count_fields = "COUNT(DISTINCT $fields)"; if ( "{$orders_table}.id" === $fields && '' === $join ) { // DISTINCT adds performance overhead, exclude the DISTINCT function when confident it is not needed. $count_fields = 'COUNT(*)'; } $this->count_sql = "SELECT $count_fields FROM $orders_table $join WHERE $where"; if ( ! $this->suppress_filters ) { /** * Filters the count SQL query. * * @since 8.6.0 * * @param string $sql The count SQL query. * @param OrdersTableQuery $query The OrdersTableQuery instance (passed by reference). * @param array $args Query args. * @param string $fields Prepared fields for SELECT clause. * @param string $join Prepared JOIN clause. * @param string $where Prepared WHERE clause. * @param string $groupby Prepared GROUP BY clause. */ $this->count_sql = apply_filters_ref_array( 'woocommerce_orders_table_query_count_sql', array( $this->count_sql, &$this, $this->args, $fields, $join, $where, $groupby ) ); } }