Je veux ajouter un index
à une colonne de table dans ma base de données MySQL. J'utilise 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'aura ni le unique
ni le primary key
attribut. Ce sera 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?
Si vous voulez travailler avec doctrine une table doit avoir une clé primaire, voir:
Chaque classe d'entité doit avoir un identifiant/clé primaire. Vous pouvez sélectionner le champ qui sert d’identifiant avec le
@Id
annotation.
Référence: https://www.doctrine-project.org/projects/doctrine-orm/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 cela n'est utilisé que si vous générez le schéma à partir de votre code php. Donc, si votre table existe déjà, vous pouvez également ajouter un index vous-même.
Lorsque vous utilisez doctrine et orm:
@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
Si vous utilisez Symfony avec doctrine, vous devrez également use
la classe Index
pour que l'annotation fonctionne correctement use Doctrine\ORM\Mapping\Index;