Silverstripe 自定义搜索成员数据对象

Silverstripe custom search into members dataobject

我在解决让 SilverStripe 3.1 Fulltextsearchable 运行 适合我使用的问题时遇到了一点问题。我从成员数据对象中检索了一些信息,并创建了链接和标题以在 Page_search.ss 模板上显示它们。

我的代码可以正常工作,但是... 错误的搜索过滤 :

public function results($data, $form){
    $data = $_REQUEST; 

    $query = htmlspecialchars($data['Search'], ENT_QUOTES,'UTF-8'); 
    $PageMembres = Member::get()->filter('NomOrganisme',$query);

    $searchresults = new ArrayList();

    foreach($PageMembres as $membre) {
        if ($membre->Type==1) { $dir="repertoire-culturel/organismes-entreprises/details/"; }
        if ($membre->Type==2) { $dir="repertoire-culturel/individus-artistes/details/"; }

        $searchresults->push(

                array(  "Title" => $membre->NomOrganisme,
                            "link" => $membre->ID,    
                            "Link" => Director::BaseURL().$dir.$membre->ID,    
                            "URL" => $membre->ID,    

                )
        );

    }



    if($searchresults){ 
        $data['Results'] = $searchresults;           
    } else { 
        $data['Results'] = ''; 
    } 

    $data['Title'] = 'Résultat(s) de recheche'; 

    return $this->customise($data)->renderWith(array('Page_results','Page')); 
}

所以我那一点,我需要改变:

 $PageMembres = Member::get()->filter('NomOrganisme',$query);

要进行更复杂的研究,例如:

 $PageMembres = DataObject::get("Member","MATCH (NomOrganisme,FirstName,Surname,Description) AGAINST ('$query' IN BOOLEAN MODE)");

我在复杂查询中遗漏了什么?为什么它不起作用? 谢谢回复!

我认为我们不能对 DataObject 成员使用 MATCH 查询。我使用并运行了复杂的工作代码:

$PageMembres = Member::get()->where("
        FirstName LIKE '%$query%' OR
        Surname LIKE '%$query%' OR
        Description LIKE '%$query%' OR
        NomOrganisme LIKE '%$query%'");