ManyToOne作为学说上的ID(symfony2)

时间:2016-02-09 14:45:50

标签: php symfony doctrine-orm doctrine

我正在使用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;

1 个答案:

答案 0 :(得分:3)

您应该从$ parent中删除 @ORM \ Id ,并为$ id和$ parent创建一个UniqueConstraint。

$values[0]