2013-08-01 6 views
23

MySQL veritabanımdaki bir tablo sütununa index eklemek istiyorum. Veritabanı şemalarımı oluşturmak için Doctrine 2 kullanıyorum.Doküman 2 ile bir INDEX'i birincil anahtar yapmadan bir sütuna nasıl ekleyebilirim?

ben

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

birincil anahtarlar oluşturmak için kullanabileceğiniz biliyoruz. Ancak, sütunum unique veya primary key özniteliğine sahip olmayacaktır. Masamda sadece index olmalıdır (MySQL bu üç türü bilir).

Böyle bir dizin oluşturmanın uygun ifadesi nedir? Eğer bir tablonun birincil anahtar olmalıdır doktrini ile çalışmak istiyorsanız

+0

bkz çalışmak açıklama için sırayla use için Index sınıf gerekecektir geçmiş sorular http://stackoverflow.com/questions/8141309/doctrine-2-with-multiple-indexes – jaczes

cevap

41

, bkz: sen oluşturursak bu sadece kullanıldığını 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 
{ 
} 

Not: http://docs.doctrine-project.org/en/latest/reference/basic-mapping.html#identifiers-primary-keys

bir dizin oluşturmak için php kodunuzdan şema. Yani tablonuz zaten mevcutsa, bir indeks de ekleyebilirsiniz. Eğer doktrin ve ORM kullandığınızda

+0

Evet teşekkürler, tam olarak aradığım şey buydu. Kullanmam gerektiğini ve birincil anahtarları kullanmak için iyi bir uygulama olduğunu biliyorum. Ama diğer sütunlara ihtiyacım var (başkaları da indeksi koymak istediğim id). Eğer –

+3

daha iyi olurdu bir 'ORM Doktrin \ ORM \ Haritalama;' ardından '@ORM \ İndeksi (...)' –

19

: Eğer doktrin ile Symfony kullanıyorsanız

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

, ayrıca düzgün use Doctrine\ORM\Mapping\Index;

+0

Çoğu insan eklemek link yerine burada gerçekçi cevap verebilirseniz – gingerCodeNinja

İlgili konular