我认为我的Doctrine schema.yml是一个配置问题,但我看不到在这里找到正确的答案。
我有两个表,BetaMeeting和ProjectTester,通过BetaMeetingAttendee形成多对多关系。一切正常,我可以编辑测试版会议,例如包括几个项目测试人员,并且关系都可以正确保存。但是,当我编辑已经与beta会议存在关系的项目测试人员时,保存时M:N关系将丢失。使用Symfony 1.4.13和admin生成器,以及Doctrine 1.2,以及项目测试人员的编辑页面,没有提到多对多关系,没有隐藏字段等。这可能是原因,数据不在那里所以Doctrine删除了吗?我认为没有必要加入它。
我的schema.yml如下,删除了无关的详细信息。
BetaMeeting:
connection: doctrine
tableName: BetaMeeting
columns:
id: { type: integer(4), primary: true, autoincrement: true }
project_id: { type: integer(4) }
date: { type: date }
relations:
Project:
local: project_id
foreign: id
foreignAlias: BetaMeetings
ProjectTester:
class: ProjectTester
refClass: BetaMeetingAttendee
foreignAlias: BetaMeetings
BetaMeetingAttendee:
connection: doctrine
tableName: BetaMeetingAttendee
columns:
beta_meeting_id: { type: integer(4), primary: true, autoincrement: false }
project_tester_id: { type: integer(4), primary: true, autoincrement: false }
relations:
BetaMeeting:
foreignAlias: BetaMeetingAttendees
ProjectTester:
foreignAlias: BetaMeetingAttendees
ProjectTester:
connection: doctrine
tableName: ProjectTester
columns:
id: { type: integer(4), primary: true, autoincrement: true }
tester_id: { type: integer(4) }
project_id: { type: integer(4) }
relations:
Tester:
local: tester_id
foreign: id
foreignAlias: Projects
Project:
local: project_id
foreign: id
foreignAlias: ProjectTesters
关于为什么在编辑后清除关系的任何线索,只关注ProjectTester对象的直接属性?
答案 0 :(得分:2)
如果您在表单中定义了一个字段,但是您将其从generator.yml中排除,则就像提交一个空字段一样,因此它会清除关系。
您必须在Form.class中取消设置该字段,以便该字段保留当前值。
public function configure()
{
unset($this['beta_meeting_list']); // or the correct value
}