Skip to main content
 首页 » 编程设计

mysql之meta_query,如何同时使用OR和AND关系进行搜索

2024年10月25日21www_RR

解决:请参阅下面的答案。

我有一个名为BOOKS的自定义帖子类型。它具有几个自定义字段,名称分别为:TITLEAUTHORGENRERATING。如何在下面修复自己的meta_query代码,以便仅在自定义字段中包含搜索词的书:titleauthorgenre 与我的搜索表单中指定的 rating完全一样,才会显示在结果中?

我已经做了一个定制的搜索表格;一个文本区域,它将搜索titleauthorgenre;和一个下拉列表,将搜索rating。我在下面创建的meta_query仅搜索titleauthorgenre。但是我现在很困惑如何为rating添加代码。

这是我通过meta_query关系在视觉上想象的方式:
(标题或作者或类型)和评级

$args = array( 
        'relation' => 'OR', 
          array( 
             'key' => 'title', 
             'value' => $searchvalue, 
             'compare' => 'LIKE' 
          ); 
          array( 
             'key' => 'author', 
             'value' => $searchvalue, 
             'compare' => 'LIKE' 
          ); 
          array( 
             'key' => 'genre', 
             'value' => $searchvalue, 
             'compare' => 'LIKE' 
          ); 
),  
        array( 
        'relation' => 'AND',  
          array( 
             'key' => 'rating', 
             'value' => $ratingvalue, 
             'compare' => '=', 
             'type' => 'NUMERIC' 
          )); 

非常感谢您的帮助和建议。

请您参考如下方法:

我在一些帮助下找到了解决方案。
下面的代码运行完美。

    $args => array( 
        'relation' => 'AND', 
        array( 
            'relation' => 'OR', 
            array( 
                'key' => 'title', 
                'value' => $searchvalue, 
                'compare' => 'LIKE' 
            ), 
            array( 
                'key' => 'author', 
                'value' => $searchvalue, 
                'compare' => 'LIKE' 
            ), 
            array( 
                'key' => 'genre', 
                'value' => $searchvalue, 
                'compare' => 'LIKE' 
            ) 
        ), 
        array( 
            'key' => 'rating', 
            'value' => $ratingvalue, 
            'compare' => '=', 
            'type' => 'NUMERIC' 
 
        ) 
    ) 
);