Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableQuery::where
Generates a properly escaped and sanitized WHERE condition for a given field.
Метод класса: OrdersTableQuery{}
Хуков нет.
Возвращает
Строку. The resulting WHERE condition.
Использование
$OrdersTableQuery = new OrdersTableQuery(); $OrdersTableQuery->where( $table, $field, $operator, $value, $type ): string;
- $table(строка) (обязательный)
- The table the field belongs to.
- $field(строка) (обязательный)
- The field or column name.
- $operator(строка) (обязательный)
- The operator to use in the condition. or 'IN' depending on $value.
По умолчанию: '=' - $value(разное) (обязательный)
- The value.
- $type(строка) (обязательный)
- The column type as specified in OrdersTableDataStore{} column mappings.
Код OrdersTableQuery::where() OrdersTableQuery::where WC 10.3.6
public function where( string $table, string $field, string $operator, $value, string $type ): string {
global $wpdb;
$db_util = wc_get_container()->get( DatabaseUtil::class );
$operator = strtoupper( '' !== $operator ? $operator : '=' );
try {
$format = $db_util->get_wpdb_format_for_type( $type );
} catch ( \Exception $e ) {
$format = '%s';
}
// = and != can be shorthands for IN and NOT in for array values.
if ( is_array( $value ) && '=' === $operator ) {
$operator = 'IN';
} elseif ( is_array( $value ) && '!=' === $operator ) {
$operator = 'NOT IN';
}
if ( ! in_array( $operator, array( '=', '!=', 'IN', 'NOT IN', '>', '>=', '<', '<=' ), true ) ) {
return false;
}
if ( is_array( $value ) ) {
$value = array_map( array( $db_util, 'format_object_value_for_db' ), $value, array_fill( 0, count( $value ), $type ) );
} else {
$value = $db_util->format_object_value_for_db( $value, $type );
}
if ( is_array( $value ) ) {
$placeholder = array_fill( 0, count( $value ), $format );
$placeholder = '(' . implode( ',', $placeholder ) . ')';
} else {
$placeholder = $format;
}
$sql = $wpdb->prepare( "{$table}.{$field} {$operator} {$placeholder}", $value ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
return $sql;
}