【发布时间】:2015-11-27 14:24:16
【问题描述】:
我有两张表User 和Survey 一个用户只能填写一个调查,所以我在两者之间设置的关系是BidirectionalonetoOne
应用的流程是用户先注册,然后填写调查,注册就可以了。
我遇到的问题是当用户尝试保存调查时,他收到以下错误
[1/2] PDOException:SQLSTATE[23000]:违反完整性约束: 1452 无法添加或更新子行:外键约束失败 (
mv2.mv_survey, 约束FK_E81A494BBF396750外键 (id) 参考资料mv_users(survey_id))
我使用的是YML 而不是annotations,所以这是我的orm.yml 用户和调查文件
用户
UserBundle\Entity\User:
type: entity
table: mv_users
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
username:
type: string
length: 255
name:
type: string
length: 255
email:
type: string
length: 255
unique: true
role:
type: string
length: 255
password:
type: string
length: 255
salt:
type: string
length: 255
nullable: true
isActive:
type: boolean
survey_id:
type: integer
nullable: true
oneToOne:
survey_allias:
targetEntity: XYZBundle\Entity\survey
joinColumn:
name: survey_id
referencedColumnName: id
lifecycleCallbacks: { }
调查
XYZBundle\Entity\survey:
type: entity
table: mv_survey
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
gender:
type: string
length: 255
nullable: true
dob:
type: date
nullable: true
postcode:
type: integer
nullable: true
userID:
type: integer
column: user_id
oneToOne:
user_allias:
targetEntity: UserBundle\Entity\User
inversedBy: survey_allias
joinColumn:
name: id
referencedColumnName: survey_id
lifecycleCallbacks: { }
我知道我可能应该使用 Fixtures,但只是为了测试控制器内部的一切是否正常,我这样做是为了插入数据
$survey = new Survey();
$survey->setGender('Male');
$survey->setDob(new \DateTime());
$survey->setUserID('1');
$manager->persist($survey);
$manager->flush();
这给出了一个错误
[1/2] PDOException:SQLSTATE[23000]:违反完整性约束: 1452 无法添加或更新子行:外键约束失败 (
mv2.mv_survey, 约束FK_E81A494BBF396750外键 (id) 参考资料mv_users(survey_id))
我将非常感谢对此的任何帮助,我什至删除了整个数据库架构并按照其他帖子的建议重新创建了它,但这也没有帮助,我在这里缺少什么?
【问题讨论】:
标签: php symfony doctrine one-to-one