或者按Doctrine2搜索不确定数量的关键字

时间:2014-02-14 21:31:48

标签: 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' => 'ski','keyword2' => 'tennis'))
->getResult();

如果我能说出我需要多少个关键字,那就很有效。

(在这种情况下是2个关键字,但如果有3个关键字呢?)

但如果我事先无法判断关键字的数量,

我该如何解决?

为此目的有好办法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效(未经测试)。

$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();