gpt4 book ai didi

database - Doctrine/Symfony 丢失 M :N relationships on save

转载 作者:搜寻专家 更新时间:2023-10-30 23:19:42 25 4
gpt4 key购买 nike

我认为我的 Doctrine schema.yml 存在配置问题,但我看不到这里的正确答案。

我有两个表,BetaMeeting 和 ProjectTester,它们通过 BetaMeetingAttendee 形成多对多关系。一切正常,我可以编辑一个测试版 session ,例如包括几个项目测试人员,并且所有关系都正确保存。但是,当我编辑已经与 Beta session 建立关系的项目测试人员时,保存后 M:N 关系将丢失。使用 Symfony 1.4.13 和管理生成器、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 对象的直接属性有关的编辑后关系被清除的任何线索?

最佳答案

如果您在表单中定义了一个字段,但您将其从 generator.yml 中排除,这就像提交一个空字段,因此它会清除关系。

您必须在 Form.class 中取消设置该字段,以便该字段保留当前值。

public function configure()
{
unset($this['beta_meeting_list']); // or the correct value
}

关于database - Doctrine/Symfony 丢失 M :N relationships on save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com