Model 与refClass中属性的多对多关系
我目前正在设计一个网站,使用symfony(1.2)和Doctrine作为ORM 我有一节晚餐课、一节标准课和一节分数课Model 与refClass中属性的多对多关系,model,symfony1,doctrine,data-modeling,orm,Model,Symfony1,Doctrine,Data Modeling,Orm,我目前正在设计一个网站,使用symfony(1.2)和Doctrine作为ORM 我有一节晚餐课、一节标准课和一节分数课 一个标记与一顿晚餐和一张支票联系在一起 标准,并且具有私有属性, 比如马克的日期、马克的价值等 晚餐和标准可以有很多 标记(或无) 在使用条令时,我使用以下代码在schema.yml中定义了此模型: Dinner: columns: date: { type: timestamp, notnull: true } nb_presents: { type
- 一个标记与一顿晚餐和一张支票联系在一起 标准,并且具有私有属性, 比如马克的日期、马克的价值等
- 晚餐和标准可以有很多 标记(或无)
Dinner:
columns:
date: { type: timestamp, notnull: true }
nb_presents: { type: integer, notnull: true }
relations:
Marks:
class: Criteria
local: dinner_id
foreign: criteria_id
refClass: Mark
Criteria:
columns:
name: { type: string(50), notnull: true }
relation:
Marks:
class: Dinner
local: criteria_id
foreign: dinner_id
refClass: Mark
Mark:
columns:
criteria_id: { type: integer, primary: true }
dinner_id: { type: integer, primary: true }
value: { type: integer, notnull: true }
relations:
Dinner:
local: dinner_id
foreign: id
Criteria:
local: criteria_id
foreign: id
问题是,由条令生成的SQL在Mark.dinner\u id
上添加了外键约束
到dinner.id
(这是正确的)并且在dinner.id
上添加了外键约束
到Mark.dinner\u id
(这确实是不正确的,因为一顿晚餐可能会有很多痕迹)
问题:
我错过了什么吗?我是不是把这种班级关系搞错了
谢谢。您需要将关系定义为一对多关系。请尝试此操作(注意晚餐和标准定义中添加的“类型:多”):
Dinner:
columns:
date: { type: timestamp, notnull: true }
nb_presents: { type: integer, notnull: true }
relations:
Marks:
class: Criteria
local: dinner_id
foreign: criteria_id
refClass: Mark
type: many
Criteria:
columns:
name: { type: string(50), notnull: true }
relation:
Marks:
class: Dinner
local: criteria_id
foreign: dinner_id
refClass: Mark
type: many
Mark:
columns:
criteria_id: { type: integer, primary: true }
dinner_id: { type: integer, primary: true }
value: { type: integer, notnull: true }
relations:
Dinner:
local: dinner_id
foreign: id
Criteria:
local: criteria_id
foreign: id