[php] 교리 및 복합 고유 키
교리에서 복합 고유 키를하고 싶습니다. 그게 내 분야입니다.
/**
* @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
*/
답변
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={"name"})
* })
*/
class VideoSettings
답변
나는 이것이 오래된 질문이라는 것을 알고 있지만 복합 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;
여기에 몇 가지 참고 사항 :
- Doctrine은 속성 이름을 기준으로 추측 할 수 있으므로 “name”열은 생략됩니다.
- 이후
videoDimension
및videoBitrate
약동학의 두 부분이 있습니다 – 지정할 필요가 없습니다nullable = false
- 필요한 경우-Composite PK는 외래 키로 구성 될 수 있으므로 관계형 매핑을 자유롭게 추가 할 수 있습니다.