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%'");
我在解决让 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%'");