gpt4 book ai didi

model - 与 refClass 中的属性的多对多关系

转载 作者:行者123 更新时间:2023-12-04 07:02:37 24 4
gpt4 key购买 nike

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

我有一个晚餐类、一个标准类和一个标记类。

  • 标记与晚餐和
    标准,并具有私有(private)属性,
    如 DateOfMark、MarkValue 等
  • 晚餐和标准可以有很多
    标记(或无)。

  • 当我使用 Doctrine 时,我在我的 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

    问题是Doctrine生成的SQL,它添加了 FOREIGN KEY CONSTRAINTMark.dinner_idDinner.id (这是正确的) 它添加了 FOREIGN KEY CONSTRAINTDinner.idMark.dinner_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

    关于model - 与 refClass 中的属性的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603252/

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