Mysql 或者按Doctrine2按不固定的关键字数进行搜索

Mysql 或者按Doctrine2按不固定的关键字数进行搜索,mysql,doctrine-orm,Mysql,Doctrine Orm,我正在通过字符串搜索获取数据 例如,“滑雪”、“网球”或搜索。我可以像这样获取数据 $articles = $em->createQuery( "SELECT a FROM AcmeTopBundle:ArticleData a where a.title like :keyword OR a.title like :keyword2 order by a.createdAt DESC") ->setParameters(array('keyword' =&

我正在通过字符串搜索获取数据

例如,“滑雪”、“网球”或搜索。我可以像这样获取数据

$articles  = $em->createQuery(
    "SELECT a FROM AcmeTopBundle:ArticleData a
    where a.title like :keyword OR a.title like :keyword2
    order by a.createdAt DESC")
->setParameters(array('keyword' => 'ski','keyword2' => 'tennis'))
->getResult();
如果我能告诉你我需要多少关键字,它会很好的工作

(在本例中为2个关键字,但如果为3个关键字呢?)

然而,如果我事先不能说出关键词的数量

我怎样才能解决它


有没有好办法达到这个目的?

类似的方法应该可以(未经测试)

$qb = $em->createQueryBuilder();
$qb->select('a')
   ->from('AcmeTopBundle:ArticleData a')
   ->orderBy('a.createdAt', 'DESC');

foreach ($keywords as $i => $keyword) {
    $qb->orWhere('a.title LIKE ?' . $i)->setParameter($i, $keyword);
}

$articles = $qb->getQuery()->getResult();