1

我想展示一些带有特定元键值的“艺术品”。每件艺术品都有一个自定义字段:“votes_average”和另一个“votes_count”。这是我的自定义查询:

$args = array(
    'post_type' => 'artworks',
    'post_status' => 'publish',
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
    'meta_query' => array(
        'relation' => 'AND',
        array(
           'key' => 'votes_average',
           'value' => '6',
           'compare' => '>=',
           'type'    => 'DECIMAL',
        ),
        array(
           'key' => 'votes_count',
           'value' => '1',
           'compare' => '>',
           'type'    => 'NUMERIC',
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'type',
            'field' => 'slug',
            'terms' => $term
        )
    )
);

我不明白为什么这个查询显示平均为 5,8 的艺术品。我犯错了吗?

4

1 回答 1

1

问题是 MySQL 将 5.8 舍入到 6 并在查询中使用。适当的查询部分看起来像

(wp_postmeta.meta_key = 'votes_average' AND CAST(wp_postmeta.meta_value AS DECIMAL) >= '6')

所以你可以用 NUMERIC 替换 DECIMAL 来解决这个问题。

    array(
       'key' => 'votes_average',
       'value' => '6',
       'compare' => '>=',
       'type'    => 'NUMERIC',
    ),
于 2013-01-01T14:30:09.853 回答