Ich möchte einige "Kunstwerke" mit spezifischen Meta-Schlüsselwerten anzeigen. Jedes Kunstwerk hat ein eigenes Feld: "votes_average" und ein weiteres "votes_count". Dies ist meine benutzerdefinierte Abfrage:
$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
)
)
);
Ich verstehe nicht, warum diese Abfrage ein Kunstwerk mit einem Durchschnitt von 5,8 anzeigt. Habe ich einen Fehler gemacht?
Antworten:
0 für die Antwort № 1Das Problem ist, dass MySQL 5,8 auf 6 gerundet und in der Abfrage verwendet wurde. Ein entsprechender Abfrageteil sieht so aus
(wp_postmeta.meta_key = "votes_average" AND CAST(wp_postmeta.meta_value AS DECIMAL) >= "6")
Sie können DECIMAL durch NUMERIC ersetzen, um dieses Problem zu lösen.
array(
"key" => "votes_average",
"value" => "6",
"compare" => ">=",
"type" => "NUMERIC",
),