我有一个难以解决的问题,即使看起来我正在应用其他找到的好食谱。
我收到以下错误:
AppBundle \ Entity \ User \ Student类型的实体缺少已分配的ID 对于字段'用户'。此实体的标识符生成策略 需要在EntityManager#persist()之前填充ID字段 叫做。如果您想要自动生成标识符而不是您 需要相应地调整元数据映射。
我有一个学说2我的实体用户和学生在symfony 2之间的一对一关系,当我用一个学生的子表格持有用户时,我希望学生的id自动设置为id的用户。
我有两个班级:
class Student
{
/**
* @ORM\Id
* @ORM\Column(type="integer", length=11)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="\AppBundle\Entity\User\User", inversedBy="student")
* @ORM\JoinColumn(name="id", referencedColumnName="id", nullable=false, unique=true, onDelete="cascade")
*/
private $user;
...
}
class User
{
/**
* @ORM\OneToOne(targetEntity="\AppBundle\Entity\User\Student", mappedBy="user", cascade={"persist"})
*/
private $student;
}
当我坚持实体时,我有上述错误。如果我打电话
$实体 - > getStudent() - > SETUSER($实体);
在我坚持实体之前,它很好,我让学生持有与用户相同的id,除了我不想在我用来持久化的方法中具体,因为我使用表单管理器作为服务其他行动也很常见。
那么是否可以设置一些注释以使学说在创建学生时自动将学生ID设置为等于用户ID? 如果是,那怎么回事?
非常感谢, 此致
答案 0 :(得分:0)
修改强>
我见过你更新了你的问题。如果可能的话,我不是很狡猾,但尝试类似
class Student
{
/**
* @ORM\Column(name="id", type="integer", nullable=false, unique=true)
* @ORM\Id
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="\AppBundle\Entity\User\User", inversedBy="student")
* @ORM\JoinColumn(name="id", referencedColumnName="id", nullable=false, unique=true, onDelete="cascade")
*/
private $user;
// ...
}
我回到使用id
列,但之前没有自动增量定义它。