È possibile utilizzare index con il generatore di query doctrine 2 e, in caso affermativo, qual è la sintassi corretta?Doctrine 2 query builder e index per
risposta
Ecco un'unica soluzione quando si utilizza QueryBuilder, con iniezione manuale dell'indice dalla clausola -
(do you querybuilder statement)
$q = $q->getQuery()->setDQL(str_replace('WHERE', 'INDEX BY yourIndexValue WHERE', $q->getDQL()));
Questo sembra funzionare per me ...
Sì, è possibile, utilizzando il generatore di query. Un piccolo esempio, supponiamo di voler indicizzare con t.someField. Guarda il terzo argomento in dal metodo.
<?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'));
?>
Questo dovrebbe funzionare in Doctrine 2.1 almeno. In Doctrine 2.0 non è ancora supportato. In Doctrine 2.0 è supportato solo quando lo si specifica con DQL.
Con Doctrine 2.1.0-DEV, utilizzo '$ qb-> add ('from', 'Entity \ Table t INDEX BY t.id');' – Maxence
Per un aggiornamento. Puoi fare qualcosa di simile.
$qb = $entityManager->createQueryBuilder();
$qb->from($repository->getClassName(), 'a', 'a.id');
$qb->select(a);
$result = new ArrayCollection($qb->getQuery()->getResult());
Di conseguenza, la raccolta di array conterrà correttamente gli elementi indicizzati.
A partire da 2.2, è ora possibile includere INDICE BY nella propria istruzione from. Se si sta aggiungendo una clausola from,
$qb->from($class, $alias, $indexBy);
Se si dispone già di una clausola FROM che si desidera sostituire, quindi è possibile sostituirlo con:
$qb->add('from', new Expr\From($class, $alias, $indexBy), false);
C'è una richiesta di pull aperta per aggiungerlo anche alla funzione createQueryBuilder del repository, quindi speriamo che questo venga presto aggiunto.
Questa dovrebbe essere la risposta corretta. – imclickingmaniac
Ehi, sto scrivendo dal 2015, e non c'è ancora :-( – zerkms
E 'stato rifiutato ... https://github.com/doctrine/doctrine2/pull/592 – cmenning
È inoltre possibile utilizzare un INDICE DI BY predefinito di una chiave esterna, ad es. "YourIndexValue_id" direttamente nella tua mappatura:
/**
* @ORM\OneToMany(targetEntity="Bar", mappedBy="foo", indexBy="bar_id")
*/
protected $bars;
Purtroppo non sembra essere documentato che si deve utilizzare il nome della colonna della chiave esterna in sé.
La sintassi corretta e la più semplice sarebbe:
$enityManager->getRepository('AppBundle:Entity')->createQueryBuilder('entity', 'entity.name')->getQuery()->getResult();
Questo sarebbe indice il risultato per campo Nome entità.
- 1. Doctrine 2 Index Eredità
- 2. Doctrine query builder: semantical error
- 3. Doctrine 2, Native Query
- 4. Come selezionare query distinte usando symfony2 doctrine query builder?
- 5. Doctrine DBAL può essere mescolato con ORM Query Builder?
- 6. Symfony 2 cache Risultati query doctrine
- 7. Doctrine 2: risultato Query come array associativo
- 8. Query many-to-many in Doctrine 2
- 9. Doctrine Query Builder Impossibile trovare la funzione ACOS
- 10. Query Builder e Group By su due colonne in Symfony2/Doctrine genera duplicati
- 11. Doctrine 2 annotazioni e "var"
- 12. Estensione GIS per Doctrine 2
- 13. Doctrine 2 PlainValue expected
- 14. Imposta LIMIT con doctrine 2?
- 15. Utilizzo di parentesi (>) in Symfony 2.5 e Doctrine query builder
- 16. Doctrine 2 con più indici
- 17. Doctrine 2 e ORM: come memorizzare ogni query per qualche entità?
- 18. Doctrine 2 Value Objects
- 19. Doctrine 2 Close Connection
- 20. Regex Query Builder
- 21. Laravel Query Builder conta dall'unione
- 22. Componente .NET Query Builder
- 23. Drupal Query builder
- 24. Doctrine 2 - best practice per i18n?
- 25. ViewHolder ArrayIndexOutOfBoundsException: length = 2; index = 2
- 26. Concatenamento orX in Doctrine2 query builder
- 27. Vincoli univoci in Doctrine 2, Symfony 2
- 28. Symfony 2 + ereditarietà di Doctrine 2 +
- 29. Zend 2 + doctrine 2 Auth Adapter
- 30. converti query SQL in stile query builder
Mi rendo conto che questa è una risposta molto vecchia, ma io vorrei solo sottolineare che questo non funzionerà per le query che non hanno alcuna clausola WHERE. – rpkamp