本文介绍了使用andwhere()的Symfony2 / Doctrine QueryBuilder的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在存储库类中使用以下方法在数据库中查找某些标签:
I am using following method in a repository class to look for certain tags in my database:
public function getItemsByTag($tag, $limit = null)
{
$tag = '%'.$tag.'%';
$qb = $this->createQueryBuilder('c');
$qb->select('c')
->where($qb->expr()->like('c.tags', '?1'))
->setParameter(1, $tag)
->addOrderBy('c.clicks', 'DESC');
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()->getResult();
}
这很好用。但是:如何添加2个其他变量(其中:已审核= 1,启用= 1)?我尝试了andwhere(),但我想不通。
This works just nice.. But: How can I add 2 additional variables (where: reviewed = 1, enabled = 1)? I tried andwhere() but I couldn't figure it out.
我还发现类似这样的东西:
I also found out that something like this:
public function getItems($limit = null)
{
$qb = $this->createQueryBuilder('b')
->select('b')
->add('where', 'b.reviewed = 1')
->add('where', 'b.enabled = 1')
->addOrderBy('b.name', 'ASC');
// ...
}
不会
有什么提示吗?
推荐答案
像这样写:
$qb = $this
->createQueryBuilder('c')
->where('c.tags LIKE :tag')
->andWhere('c.reviewed = 1')
->andWhere('c.enabled = 1')
->setParameter('tag', "%{$tag}%")
->orderBy('c.clicks', 'DESC')
->addOrderBy('b.name', 'ASC');
if ($limit) {
$qb->setMaxResults($limit);
}
return $qb->getQuery()->getResult();
您也可以在条件为$code>的情况下团结那些:
You could also unite those where
conditions:
->where('c.tags LIKE :tag AND c.reviewed = 1 AND c.enabled = 1')
这篇关于使用andwhere()的Symfony2 / Doctrine QueryBuilder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!