2012-03-04 12 views
31

Sto cercando di creare un semplice indice per una tabella in Doctrine2/Symfony2 utilizzando le annotazioni e sto ottenendo il seguente errore:Creazione indice nella Doctrine2/Symfony2 genera un errore semantico

[Semantical Error] The annotation "@Index" in class {My\Namespaces\Here} was never imported. Did you maybe forget to add a "use" statement for this annotation?

non posso trovare in qualsiasi documentazione quale spazio dei nomi dovrei "usare" per aggiungere la funzionalità Index. Ecco la mia annotazione:

@ORM\Table(indexes={@Index(name="email_address_idx", columns={"email_address"})}) 

e qui ci sono gli spazi dei nomi sto già utilizzando:

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert; 
use Gedmo\Mapping\Annotation as Gedmo; 
use Symfony\Component\Validator\Constraints as Assert; 

Cosa namespace devo utilizzare per aggiungere questa funzionalità?

risposta

101

Sembra che vi serve:

@ORM\Table(indexes={@ORM\Index(name="email_address_idx", columns={"email_address"})}) 
+0

Perfetto. Grazie! – Dan

+0

Come aggiungere indici su più colonne utilizzando questo approccio? – jitendra

+0

Cosa succede se imposto l'attributo 'unique' su una colonna? Il SGBD imposta automaticamente un indice sulla colonna della tabella di destinazione? – Stphane

14

È possibile utilizzare quanto segue per risolvere il problema:

use Doctrine\ORM\Mapping\Index; 
Problemi correlati