Tôi biết đây là một câu hỏi cũ, nhưng tôi đã gặp nó khi đang tìm cách tạo PK tổng hợp và nghĩ rằng nó có thể sử dụng một số cập nhật.
Mọi thứ thực sự đơn giản hơn nhiều nếu thứ bạn cần là một Khóa chính tổng hợp. (Trong đó, dĩ nhiên, đảm bảo tính độc đáo) tài liệu thuyết chứa một số mẫu đẹp bởi url này: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html
Vì vậy, ví dụ ban đầu có thể trông giống như sau:
/**
* @var string $videoDimension
*
* @ORM\Id @ORM\Column(type="string")
*/
private $videoDimension;
/**
* @var string $videoBitrate
*
* @ORM\Id @ORM\Column(type="string")
*/
private $videoBitrate;
Một vài lưu ý ở đây:
- Cột "tên" bị bỏ qua vì Doctrine có thể đoán nó dựa trên tên thuộc tính
- Vì
videoDimension
và videoBitrate
là cả hai phần của PK - không cần chỉ địnhnullable = false
- Nếu được yêu cầu - PK tổng hợp có thể bao gồm các khóa ngoại, vì vậy hãy thoải mái thêm một số ánh xạ quan hệ