私は教義で複合ユニークキーを行いたいです。それらは私の分野です:
/**
* @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
これは古い質問であることは知っていますが、複合PKを作成する方法を探しているときに出くわし、何らかの更新を使用できると考えました。
必要なものが複合主キーである場合、実際は非常に簡単です。 (もちろん、一意性を保証します)Doctrineドキュメンテーションには、このURLのニースの例が含まれています: http://docs.doctrine-project.org/projects/doctrine-orm/ ja/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
を指定する必要はありません。