gpt4 book ai didi

doctrine - Symfony2/Doctrine QueryBuilder 使用 andwhere()

转载 作者:行者123 更新时间:2023-12-02 14:08:08 26 4
gpt4 key购买 nike

我在存储库类中使用以下方法来查找数据库中的某些标签:

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 个附加变量(其中:reviewed = 1,enabled = 1)?我尝试了 andwhere() 但我无法弄清楚。

我还发现了这样的事情:

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

您还可以合并这些 where 条件:

->where('c.tags LIKE :tag AND c.reviewed = 1 AND c.enabled = 1')

关于doctrine - Symfony2/Doctrine QueryBuilder 使用 andwhere(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com