Model 与refClass中属性的多对多关系

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

我目前正在设计一个网站,使用symfony(1.2)和Doctrine作为ORM

我有一节晚餐课、一节标准课和一节分数课

  • 一个标记与一顿晚餐和一张支票联系在一起 标准,并且具有私有属性, 比如马克的日期、马克的价值等
  • 晚餐和标准可以有很多 标记(或无)
在使用条令时,我使用以下代码在schema.yml中定义了此模型:

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