Symfony - Как добавить индекс ORM в трейт

У меня есть несколько сущностей (скажем, 5), которые используют эту черту, и я хочу добавить индекс в поле uuid через черту, поэтому я хочу просто использовать черту в какой-то конкретной сущности и, как результат, иметь индексированное поле в сущности

namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as JMS;
trait UuidTrait {
    /**
     * @ORM\Column(type = "string", nullable=true, options = {"default": null})
     */
    protected $uuid;

    public function getUuid()
    {
        //common code
    }

    public function generateUuid()
    {
        //common code
    }

    public function setUuid($uuid)
    {
        //common code
    }    
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
498
1

Ответы 1

Прямая аннотация для добавления индекса непосредственно в определение столбца не поддерживается. А черта - это в значительной степени простое включение файла.

http://doctrine-orm.readthedocs.io/en/latest/reference/annotations-reference.html#column

Также на github открыт кейс

https://github.com/doctrine/doctrine2/issues/6249

Есть обходной путь, который может сработать, но он может не соответствовать требованиям вашей модели. Вы можете определить столбец как уникальный, что создаст индекс. Но вам придется сделать столбец не допускающим значения NULL.

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

Другие вопросы по теме