2013-08-01 20 views
23

Desidero aggiungere uno index a una colonna di tabella nel mio database MySQL. Sto usando Doctrine 2 per creare i miei schemi di database.Come posso aggiungere un INDICE con Doctrine 2 a una colonna senza renderlo una chiave primaria?

So che posso usare

/** @Id @Column(type="integer") */ 

per creare chiavi primarie. Ma la mia colonna non deve avere l'attributo unique né l'attributo primary key. Deve essere semplicemente un index nella mia tabella (MySQL conosce questi tre tipi).

Qual è la dichiarazione corretta per creare un tale indice?

+0

vedere domande precedenti http://stackoverflow.com/questions/8141309/doctrine-2-with-multiple-indexes – jaczes

risposta

41

Se si desidera lavorare con la dottrina di una tabella deve avere una chiave primaria, vedi: http://docs.doctrine-project.org/en/latest/reference/basic-mapping.html#identifiers-primary-keys

per creare un indice: http://docs.doctrine-project.org/en/latest/reference/annotations-reference.html#annref-index

<?php 
/** 
* @Entity 
* @Table(name="ecommerce_products",indexes={@Index(name="search_idx", columns={"name", "email"})}) 
*/ 
class ECommerceProduct 
{ 
} 

Si noti che questo è utilizzato solo se si genera il schema dal tuo codice php. Quindi, nel caso in cui il tuo tavolo esista già, puoi anche aggiungere un indice tu stesso.

+0

Sì, grazie, era esattamente quello che stavo cercando. So che devo usare e che è buona pratica usare le chiavi primarie. Ma ho bisogno di altre colonne (altre ma l'id che voglio mettere all'indice). –

+3

sarebbe meglio se fosse possibile fornire la risposta effettiva qui piuttosto che un collegamento –

19

Quando si utilizza la dottrina e ORM:

@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})}) 
1

Se stai usando Symfony con la dottrina, si dovrà anche al use classe Index in modo che l'annotazione di funzionare correttamente use Doctrine\ORM\Mapping\Index;

+0

La maggior parte delle persone aggiunge un 'use Doctrine \ ORM \ Mapping come ORM;' quindi '@ORM \ Index (...)' – gingerCodeNinja

Problemi correlati