2019-08-28 13:05:57 1399次浏览 1条回答 0 悬赏 10 金钱

01.png
Yii在插入数据时报错SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails 上网查得知是:外键与外键对应的表的主键值不匹配。问题是我的内容是匹配的,我在phpMyadmin 里用相同数据插入一遍,成功了。说明数据库的外键设置没问题,但不知Yii里为什么会报错?请教一下,谢谢!

最佳答案

  • 发布于 2019-08-28 13:47 举报

    看你的 sql 语句,event 这个表 你只插入了 createtime 和 updatetime 这两个字段,根本就 没有 departmentid 这个字段,作为 外键,这 肯定是 不行的
    不知道你在 phpMyAdmin 里执行的 sql 语句是 什么样的,想来 肯定不是 只有 createtime 和 updatetime 这两个字段

    2 条回复
    回复于 2019-08-28 14:17 回复

    在phpMyAdmin中插入时,语句包含各个字段(肯定不止createtime 和 updatetime 这两个字段),是完整的,可以正常插入。而且在phpMyAdmin中,如果不用语句插入,用填表方式插入的话,设置了外键的字段都有下拉菜单,直接点就行,也能完整插入。在Yii框架中插入时,createtime 和 updatetime 这两个字段是在Yii模型文件的public function beforeSave($insert)中插入的。现在的问题是为什么在php?r=event%2Fcreate界面,也就是views\event\create.php这个界面插入时,会出问题(接收不到数据)?我尝试在phpMyAdmin中插入一行数据,然后在Yii的view、update界面中都可查看,修改。既然能修改,为什么插入会有问题?

    回复于 2019-09-07 00:02 回复

    找到了问题的所在。除了createtime 和 updatetime,其他的都没插入,是因为我把createtime 和 updatetime设置了表单的隐藏域而没有赋值,从而导致整个表单无法插入。谢谢你的思路

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
☣特种使者☣
职场新人

☣特种使者☣

注册时间:2019-08-28
最后登录:2019-12-15
在线时长:2小时10分
  • 粉丝0
  • 金钱50
  • 威望0
  • 积分70

热门问题