[英]ManyToOne as ID on doctrine (symfony2)
I'm developing a project with Symfony2 LTS and need to create Entities for doctrine. 我正在使用Symfony2 LTS开发一个项目,需要为该学说创建实体。 In my database model I have a OneToMany relation, that is part of the PK.
在我的数据库模型中,我有一个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 | | |
+--------------+---------+-----+----------------+
When I create a PHP Entity class only with id as @ORM\\Id
tehre are no Problems, but when I try to add the ManyToOne as Id I get an error 当我只创建一个ID为
@ORM\\Id
tehre的PHP Entity类时没有问题,但是当我尝试将ManyToOne作为ID添加时,出现错误
[Doctrine\ORM\Mapping\MappingException]
Single id is not allowed on composite primary key in entity MyBundle\Entity\MyChild
The Php class looks like this: 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;
You should remove the @ORM\\Id from the $parent and create a UniqueConstraint for $id and $parent. 您应该从$ parent中删除@ORM \\ Id ,并为$ id和$ parent创建UniqueConstraint。
/**
* @ORM\Table(uniqueConstraints={
* @ORM\UniqueConstraint(
* columns={"id", "foreignId"}
* )
* })))
*/
class MyChild
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var MyParent
*
* @ORM\ManyToOne(targetEntity="MyParent", inversedBy="childs")
* @ORM\JoinColumn(name="foreignId", referencedColumnName="id")
*/
private $parent;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.