Symfony - 尝试使用一些外键更新DB中的记录

时间:2011-07-13 01:25:57

标签: symfony1 insert doctrine

非常感谢最近的帮助。它工作得很好,但现在我遇到了一些代码问题。

          //Save course record to DB
          $record_course = new course();
          $record_course->setName($courseInfo['name']);
          $record_course->setUrl($courseInfo['url']);
          $record_course->setAcronym($courseInfo['acronym']);
          $record_course->setCourseTypeId($record_courseType->getId());
          $record_course->setStartDate($courseInfo['startDate']);
          $record_course->setCollegeId($record_college->getId());
          $record_course->setPlanUrl($courseInfo['planUrl']);
          $record_course->replace();

正如您所看到的,我尝试更新记录,但现在我们有一些外键。在这种情况下是CourseTypeId和CollegeId。当我尝试替换此记录时,我会收到下一条消息:

“SQLSTATE [23000]:完整性约束违规:1451无法删除或更新父行:外键约束失败(grabmarkcourse,CONSTRAINT course_course_type_id_course_type_id FOREIGN KEY({ {1}})参考course_type_idcourse_type))“

有人可以帮我吗? 抱歉,我现在正在symfony开始,这是我第一次接触MVC框架。 非常感谢, 亚历山大·索萨

1 个答案:

答案 0 :(得分:2)

Alexandre,这是一个比symfony更多的数据库问题。

当您尝试更新此记录时,您将使用新值更改CourseTypeId和CollegeId,并根据您是外键更改这些值。这些字段中的值(CourseTypeId和CollegeId)是否存在于引用这些键的表中?

例如:

假设您将CourseTypeId设置为15,将CollegeId设置为10,那么数据库表中是否还存在值15和10,这些外键是从哪里引用的?如果没有,则会显示您遇到的Integrity约束错误。由于您正在更新而不是真正插入,因此值15和10必须存在于表中,两个外键列引用的位置。

这有帮助吗?