Подтвердить что ты не робот

Как я могу добавить INDEX с Doctrine 2 в столбец, не делая его первичным ключом?

Я хочу добавить index в столбец таблицы в моей базе данных MySQL. Я использую Doctrine 2 для создания схем моей базы данных.

Я знаю, что могу использовать

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

для создания первичных ключей. Но моя колонка не должна иметь атрибут unique или primary key. Он просто должен быть index в моей таблице (MySQL знает эти три типа).

Какова правильная инструкция для создания такого индекса?

4b9b3361

Ответ 1

Если вы хотите работать с доктриной, у таблицы должен быть первичный ключ, смотрите:

Каждый класс сущности должен иметь идентификатор/первичный ключ. Вы можете выбрать поле, которое служит идентификатором, с аннотацией @Id.
Ссылка: https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#identifiers-primary-keys

Чтобы создать индекс: 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
{
}

Обратите внимание, что это используется, только если вы генерируете схему из своего php-кода. Так что, если ваша таблица уже существует, вы можете просто добавить индекс самостоятельно.

Ответ 2

Когда вы используете doctrine и orm:

@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})

Ответ 3

Если вы используете Symfony с доктриной, вам также понадобится use класс Index для правильной работы аннотации use Doctrine\ORM\Mapping\Index;