How can I add an INDEX with Doctrine 2 to a column without making it a primary key?
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.
When you use Doctrine and ORM:
@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
If you're using Symfony with doctrine, you will also need to use
the Index
class in order for the annotation to work properly
use Doctrine\ORM\Mapping\Index;