У меня есть несколько сущностей (скажем, 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
}
}




Прямая аннотация для добавления индекса непосредственно в определение столбца не поддерживается. А черта - это в значительной степени простое включение файла.
http://doctrine-orm.readthedocs.io/en/latest/reference/annotations-reference.html#column
Также на github открыт кейс
https://github.com/doctrine/doctrine2/issues/6249
Есть обходной путь, который может сработать, но он может не соответствовать требованиям вашей модели. Вы можете определить столбец как уникальный, что создаст индекс. Но вам придется сделать столбец не допускающим значения NULL.
Тем не менее, с точки зрения оптимизации, такая настройка относится к уровню таблицы, где будет легче получить обзор ваших существующих индексов и решить, нужно ли вам настраивать один или несколько из них.