我有几个实体(假设 5 个),它们使用此特征,我想通过特征向 uuid 字段添加一个索引, 所以我只想在某些特定实体中使用特征,因此在实体中有一个索引字段
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
use JMSSerializerAnnotation as JMS;
trait UuidTrait {
/**
* @ORMColumn(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
有一种解决方法可能有效,但它可能不符合您的模型要求。 您可以将列定义为唯一列,这将创建一个索引。 但是您必须使该列不可为空。
也就是说,从优化的角度来看,这样的设置属于表级别,在表级别,可以更轻松地概述现有索引并判断是否必须微调其中的一个或多个索引。