我在存储库中编写了一个自定义查询:
public function findProductDetails($filter = array(), $offset = 0, $limit = 0)
{
$query = $this->getEntityManager()
->createQuery('SELECT prod, comp, cat FROM PaulDemoBundle:Product prod JOIN prod.category cat JOIN prod.company comp WHERE prod.productName LIKE \'%'.$filter['freetext'].'%\' ');
$query->setFirstResult($offset);
$query->setMaxResults($limit);
return $query->getResult();
}
现在我正在尝试使用 Doctrine Query Builder 的 orderBy() 部分向其中添加 ORDER BY:
$query->orderBy('prod.productRef', 'ASC');
但是在尝试运行时出现错误:
Call to undefined method Doctrine\ORM\Query::orderBy()
因此,我将以下内容添加到我的存储库顶部,在 EntityRepository 的 USE 调用下方:
use Doctrine\ORM\Query;
但是,没有骰子。
我找到的所有文档都只是显示了使用 $query->orderBy() 方法构建的查询。 Symfony2 文档中没有任何地方说明如何设置您的存储库以使用 Doctrine Query Builder。
我到底如何添加 orderBy() 方法?
我什至正确构建我的查询吗? (它基于 Symfony2 文档,但它们非常糟糕)
最佳答案
如果您没有使用 queryBuilder,则无法使用应用于它的方法。您可以自己进行查询,将 ORDER BY 添加到您的查询中,如下所示:
->createQuery('SELECT prod, comp, cat FROM PaulDemoBundle:Product prod JOIN prod.category cat JOIN prod.company comp WHERE prod.productName LIKE \'%'.$filter['freetext'].'%\' ORDER BY prod.productRef ASC');
或者您使用 QueryBuilder 构建您的查询:
$qb = $em->createQueryBuilder();
...
有关 QueryBuilder 和 here 有关 createQuery 和 QueryBuilder 的差异,请参阅 here。
关于php - Symfony2 - 自定义存储库 + Doctrine QueryBuilder = 错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7203182/