是否可以使用索引与教条2查询生成器,如果是的话,什么是正确的语法?原则2查询生成器和索引
回答
这是一个使用的QueryBuilder时,使用索引的手工注射by子句一个解决方案 -
(do you querybuilder statement)
$q = $q->getQuery()->setDQL(str_replace('WHERE', 'INDEX BY yourIndexValue WHERE', $q->getDQL()));
这似乎为我工作...
是的,这是可能的,使用查询生成器。一个小例子,让我们假设我们想通过t.someField来索引。从方法中观察第三个参数。
<?php
$query = $em->createQueryBuilder()
->select('t.somefield', 't.someOtherField')
->setFrom('Entity\Table', 't', 't.someField')
->getQuery()
$results = $query->getArrayResult();
//your result will look something like:
$results['somefieldvalue'] = array(array('somefield' => 'value', 'someOtherField' => 'test'));
?>
这应该在Doctrine 2.1至少工作。在Doctrine 2.0中,它尚未得到支持。在Doctrine 2.0中,只有使用DQL指定时才支持。
随着Doctrine 2.1.0-DEV,我使用`$ qb-> add('from','Entity \ Table t INDEX BY t.id');` – Maxence 2012-02-18 13:30:23
对于更新。你可以做这样的事情。
$qb = $entityManager->createQueryBuilder();
$qb->from($repository->getClassName(), 'a', 'a.id');
$qb->select(a);
$result = new ArrayCollection($qb->getQuery()->getResult());
因此,数组集合将包含正确索引的元素。
从2.2开始,您现在可以在您的from语句中包含INDEX BY。如果要添加从第一个,
$qb->from($class, $alias, $indexBy);
如果你已经有了一个FROM子句中要替换,那么你可以将其替换为:
$qb->add('from', new Expr\From($class, $alias, $indexBy), false);
有一个开放的拉请求添加它到存储库的createQueryBuilder函数,希望这会很快加入。
这应该是正确的答案。 – imclickingmaniac 2014-04-25 09:32:50
您还可以使用外键的默认INDEX BY,例如,直接在您的映射“yourIndexValue_id”:
/**
* @ORM\OneToMany(targetEntity="Bar", mappedBy="foo", indexBy="bar_id")
*/
protected $bars;
不幸的是它似乎并没有被记录,你必须使用外键本身的列的名称。
的语法正确,最简单的是:
$enityManager->getRepository('AppBundle:Entity')->createQueryBuilder('entity', 'entity.name')->getQuery()->getResult();
这将指数实体名称字段的结果。
- 1. 原则 - 有MAX与查询生成器
- 2. 使用查询生成器删除原则2
- 3. 原则查询生成器原生mysql变量
- 4. 使用原则查询生成器快速查询
- 5. Laravel 5:原生SQL查询生成器
- 6. 与laravel和查询生成器检索列的差异为2
- 7. 使用查询生成器或sql原则
- 8. 基于数组的原则查询生成器
- 9. 请参阅原则查询生成器DQL与params就位
- 10. 原则查询生成器连接添加表两次
- 11. 使用连接时的原则查询生成器错误
- 12. DQL访问属性在查询生成器(原则)
- 13. 原则查询生成器错误结果
- 14. 如何使用symfony2原则查询生成器来选择不同的查询?
- 15. Symfony2原则查询生成器作为FROM子句中的子查询
- 16. Symfony 2 Formtype查询生成器
- 17. 使用Doctrine 2查询生成器
- 18. 正则表达式查询生成器
- 19. 生成原则2实体时出错
- 20. cakephp3.0查询生成器检索数据
- 21. Sensenet:查询生成器,搜索领域
- 22. 翻译原始查询到查询生成器CakePHP中3.X
- 23. laravel查询生成器从原始查询
- 24. 将原始查询转换为Laravel查询生成器
- 25. 原始查询内部查询生成器可以使用laravel查询生成器保护sql注入?
- 26. Springdata jpa和原生查询
- 27. 在Laravel5中查询生成器的原生SQL
- 28. Doctrine查询生成器和Silex
- 29. 查询生成器和条件语句
- 30. SQL查询生成器和制图
我意识到这是一个非常古老的答案,但我只想指出,这不适用于没有任何WHERE子句的查询。 – rpkamp 2016-02-03 11:30:05