我正在使用Symfony2 LTS开发一个项目,需要为教义创建实体。在我的数据库模型中,我有一个OneToMany关系,这是PK的一部分。
Parent
+-------+--------------+-----+----------------+
| Field | Type | Key | Extra |
+-------+--------------+-----+----------------+
| id | int(11) | PRI | auto_increment |
| name | varchar(255) | | |
+-------+--------------+-----+----------------+
MyChild
+--------------+---------+-----+----------------+
| Field | Type | Key | Extra |
+--------------+---------+-----+----------------+
| id | int(11) | PRI | auto_increment |
| foreignId | int(11) | PRI | |
| other_fields | text | | |
+--------------+---------+-----+----------------+
当我创建一个只有id为@ORM\Id
的PHP实体类时,没有问题,但当我尝试将ManyToOne添加为Id时出现错误
[Doctrine\ORM\Mapping\MappingException]
Single id is not allowed on composite primary key in entity MyBundle\Entity\MyChild
Php类看起来像这样:
class MyChild
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var MyParent
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="MyParent", inversedBy="childs")
* @ORM\JoinColumn(name="foreignId", referencedColumnName="id")
*/
private $parent;
答案 0 :(得分:3)
您应该从$ parent中删除 @ORM \ Id ,并为$ id和$ parent创建一个UniqueConstraint。
$values[0]