学说和复合独特的钥匙

我想在教义上做复合独特的关键。 那些是我的领域:

/** * @var string $videoDimension * * @Column(name="video_dimension", type="string", nullable=false) */ private $videoDimension; /** * @var string $videoBitrate * * @Column(name="video_bitrate", type="string", nullable=false) */ private $videoBitrate; 

我怎么能显示学说,那些组合在一起的复合独特的关键?

回答问题:

 use Doctrine\ORM\Mapping\UniqueConstraint; /** * Common\Model\Entity\VideoSettings * * @Table(name="video_settings", * uniqueConstraints={ * @UniqueConstraint(name="video_unique", * columns={"video_dimension", "video_bitrate"}) * } * ) * @Entity */ 

请参阅@UniqueConstraint

我发现它更详细地use ORM,然后在注释中加上ORM 。 另外请注意,您可以将注释分解为多行,以使其更具可读性,特别是如果您有几个要提及的项目(下面的示例中的索引)。

 use Doctrine\ORM\Mapping as ORM; /** * VideoSettings * * @ORM\Cache(usage="NONSTRICT_READ_WRITE") * @ORM\Entity(repositoryClass="AppBundle\Repository\VideoSettingsRepository") * @ORM\Table(name="emails", uniqueConstraints={ * @ORM\UniqueConstraint(name="dimension_bitrate", columns={"video_dimension", "video_bitrate"}) * }, indexes={ * @ORM\Index(name="name", columns={"nane"}) * }) */ class VideoSettings 

我知道这是一个古老的问题,但我碰到了它,同时寻找一种方法来创build复合PK,并认为它可以使用一些更新。

如果你需要的是一个复合主键,情况就更简单了。 (当然,这确保了唯一性)Doctrine文档包含一些很好的例子,通过这个url: http : //docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html

所以最初的例子可能是这样的:

 /** * @var string $videoDimension * * @ORM\Id @ORM\Column(type="string") */ private $videoDimension; /** * @var string $videoBitrate * * @ORM\Id @ORM\Column(type="string") */ private $videoBitrate; 

这里有一些注意事项:

  1. 由于Doctrine能够根据属性名称来猜测它,所以列“name”被忽略
  2. 由于videoDimensionvideoBitrate都是PK的一部分,因此不需要指定nullable = false
  3. 如果需要的话 – Composite PK可能由外键组成,所以随意添加一些关系映射