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?
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.
quand vous utilisez doctrine et orm:
@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
si vous utilisez Symfony avec doctrine, vous aurez aussi besoin de use
Index
classe pour que l'annotation fonctionne correctement
use Doctrine\ORM\Mapping\Index;