我正在使用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
tehre的PHP Entity类时没有问题,但是当我尝试将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;
您应该从$ 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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句