如果我们在搜索时用空格分开关键词,那么我们很可能返回不了我们想搜索的东西,修改一下search方法
public function search(string $term)
{
$termList = explode(' ', $term);
$qb = $this->createQueryBuilder('category')
->leftJoin('category.fortuneCookies', 'fortuneCookie')
->andWhere('category.name LIKE :searchTerm OR category.name IN(:termList) OR category.iconKey LIKE :searchTerm OR fortuneCookie.fortune LIKE :searchTerm')
->setParameter('searchTerm', '%' . $term . '%')
->setParameter('termList', $termList);
$query = $qb->getQuery();
return $query->getResult();
}
我们在写原生IN的时候需要用逗号分开并且用括号包裹,但是在Doctrine中只需要传一个数组即可,就是这么简单