Comment puis-je ajouter un INDEX avec la Doctrine 2 à une colonne sans en faire une clé primaire?

je veux ajouter un index pour une colonne de table dans mon MySQL-base de données. J'utilise la Doctrine 2 pour créer mes schémas de base de données.

je sais que je peux utiliser

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

pour créer des clés primaires. Mais ma colonne n'a l' unique ni primary key l'attribut. C'est simplement un index dans ma table (MySQL connaît ces trois types).

Quelle est la déclaration appropriée pour créer un tel index?

25
demandé sur Gottlieb Notschnabel 2013-08-01 14:41:46

3 réponses

si vous voulez travailler avec la doctrine une table doit avoir une clé primaire, voir: http://docs.doctrine-project.org/en/latest/reference/basic-mapping.html#identifiers-primary-keys

Pour créer un index: https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref_index

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

notez que ceci n'est utilisé que si vous générez le schéma à partir de votre code php. Donc au cas où votre table il existe déjà, vous pouvez aussi ajouter un index vous-même.

43
répondu Flip 2018-05-08 22:32:47

quand vous utilisez doctrine et orm:

@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
21
répondu websky 2014-12-13 05:39:32

si vous utilisez Symfony avec doctrine, vous aurez aussi besoin de useIndex classe pour que l'annotation fonctionne correctement use Doctrine\ORM\Mapping\Index;

2
répondu Samir Patel 2016-07-14 21:35:00