How can I add an INDEX with Doctrine 2 to a column without making it a primary key?

doctrine-orm, indexing, mysql

Solution

If you want to work with doctrine a table must have a primary key, see:

Every entity class must have an identifier/primary key. You can select the field that serves as the identifier with the `@Id` annotation. Reference: Identifiers and Primary keys

To create an index: Annotations Reference

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

Note that this is only being used if you generate the schema from your PHP code. So in case your table already exist you can also just add an index yourself.

Problem

I want to add an index to a table column in my MySQL database. I am using Doctrine 2 to create my database schemas. I know that I can use ``` /** @Id @Column(type="integer") */ ``` to create primary keys. But my column shall neither have the `unique` nor the `primary key` attribute. It shall simply be an `index` in my table (MySQL knows these three types). What is the proper statement to create such an index?

Original source

Related problems