it-swarm.com.de

Vergleich zwischen einer negativen und einer positiven Zahl

Ich habe einige Schwierigkeiten beim Vergleich zwischen einer negativen und einer positiven Zahl. Dieser Code funktioniert gut, wenn er zwischen zwei positiven Zahlen liegt, aber nicht, wenn er zwischen einer negativen und einer positiven Zahl liegt.

Dies ist Teil meiner 'meta_query':

array_Push($metaQuery,
    array('relation' => 'AND',
        array(
            'key' => 'longitude',
            'value' => array($minlng, $maxlng),
            'compare' => 'BETWEEN',
        ),
    )
);

Wenn zum Beispiel $ minlng -1.5 und $ maxlng 1.5 ist. Es werden Werte durchlaufen, die gleich -3 sind.

Hier ist ein var_dump der meta_query, wenn das eine Hilfe ist:

array(1) {
    [0]=>
    array(2) {
            ["relation"]=>
            string(3) "AND"
            [0]=>
            array(3) {
                    ["key"]=>
                    string(9) "longitude"
                    ["value"]=>
                    array(2) {
                            [0]=>
                            float(-0.989505008087)
                            [1]=>
                            float(1.31257480809)
                    }
                    ["compare"]=>
                    string(7) "BETWEEN"
            }
      }
}
1

Ich habe den folgenden Code ausprobiert:

$posts = get_posts([
    "post_type" => "CUSTOM_POST_TYPE",
    "meta_query" => [
        'relation' => 'AND',
        [
            'key' => 'longitude',
            'value' => [-0.9895, 1.3125],
            'compare' => 'BETWEEN',
            "type" => "NUMERIC",
        ],
    ],
]);

Wenn ich "type" => "NUMERIC" entferne, konnte ich Ihr Problem reproduzieren, da der Vergleich auf Zeichenfolgen basiert.

Wenn Sie jedoch den Typ NUMERIC hinzufügen, enthält die MySQL-Anforderung CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN '-0.9895' AND '1.3125' und die Abfrage gibt die vorgesehenen Werte zurück.

3
mmm