首页 > 解决方案 > Silverstripe 过滤器关系 AND 而不是 OR

问题描述

我有一个使用 SilverStripe 3.5.6 的自定义搜索,它将所有关键字分解为一个数组,并且只返回包含所有单词的结果,而不是包含其中一个单词的结果。

这只是脚本的一小部分,但这就是我使用过滤器功能的方式。

foreach($keywords as $keyword) {
    $search_terms_title['Title:PartialMatch'][] = $keyword;
}

Page::get()->filter($search_terms_title)

标签: phpmysqlsilverstripe

解决方案


您可以构建每个过滤器,添加许多AND Title LIKE '%keyword%'where 子句,如下所示:

$pages = Page::get()
foreach($keywords as $keyword) {
    $pages = $pages->filter('Title:PartialMatch', $keyword);
}

推荐阅读