我想在学说中做复合唯一键。 这些是我的领域:
/**
* @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;
我如何展示学说,那些组合在一起的是复合唯一键?
答案 0 :(得分:184)
回答问题:
use Doctrine\ORM\Mapping\UniqueConstraint;
/**
* Common\Model\Entity\VideoSettings
*
* @Table(name="video_settings",
* uniqueConstraints={
* @UniqueConstraint(name="video_unique",
* columns={"video_dimension", "video_bitrate"})
* }
* )
* @Entity
*/
答案 1 :(得分:16)
我发现ListViewItem
仅对ORM更加详细,然后在注释中添加use
前缀。另请注意,您可以将注释拆分为多行以使其更具可读性,尤其是如果您有几个要提及的项目(在下面的示例中为索引)。
ORM
答案 2 :(得分:1)
我知道这是一个老问题,但我在寻找创建复合PK的方法时遇到了它,并认为它可以使用一些更新。
如果您需要的是复合主键,事情实际上要简单得多。 (当然,这保证了唯一性)Doctrine文档包含了一些很好的例子: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;
这里有几点说明:
videoDimension
和videoBitrate
都是PK的一部分,因此无需指定nullable = false
答案 3 :(得分:0)
XML版本:
<unique-constraints>
<unique-constraint columns="column1,column2" name="give_some_explicit_name" />
</unique-constraints>
文档中的更多详细信息:
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/xml-mapping.html#defining-indexes-or-unique-constraints