我想制作一个多字搜索,将查询表中的多个列。到目前为止,我的代码对于单个列的效果很好,但正如您可以想象的那样,使用它以获得更多的一列成为问题。多栏搜索多栏Symfony Doctrine
如果我添加orWhere
它不会工作,我不想创建更多的循环,因为它会变得非常繁琐。有任何想法吗?
$query = $request->getParameter("article-search");
$keywords = explode(" ", $query);
for($i = 1; $i <= count($keywords); $i++){
$q->addWhere("a.title LIKE ?", "%" . $keywords[$i - 1] . "%");
}
我在过去做过这样的事情,作为我重用的类。张贴在这里太大了,但我会解释。开始构建一个“字符串”变量,不要尝试使用数据库Merhods构建。你将有几个循环来解决问题。首先,当跨多个列进行搜索时,您会在它们之间添加LIKE与“OR”。那里有你会分裂的词语;建议使用preg_split()进行更多控制。对于每个单词,您都需要限制搜索,所以在它们之间使用“AND”。请记住,您可能还有多个参数/条件甚至类型(字符串,整数,日期)。 – jjwdesign