两个数据库表以两种不同的方式相关......?

时间:2011-06-01 22:34:57

标签: mysql doctrine rdbms yaml

我有点在这个问题上摸不着头脑。这是场景。我正在使用Doctrine和YAML模式文件:

我有一个表User和一个表Event

用户看起来像这样:

User:
    columns:
        id:
            type: integer(7)
        email:          
            type: string(100)
        display_name:
            type: string(255)
        fb_id:
            type: string(100)
    relations:
        Event:
            type: many
            refClass: UserEvent

活动如下:

Event:
    columns:
        id:
            type: integer(7)
        initiator_id:          
            type: integer(7)
        loc_latitude: 
            type: decimal(11)
        loc_longitude: 
            type: decimal(11)
        4sq_id:
            type: integer(11)
    relations:
        User:
            type: one
            local: initiator_id
            foreign: id
        User:
            type: many
            refClass: UserEvent

正如您所看到的,问题是:用户(或“发起人”)可以启动许多事件,并且事件可以属于一个用户(“发起人”)。但是,事件也可以包含许多加入它的用户,并且用户可以加入许多事件。

所以事件和用户最终以两种不同的方式相关联。这是如何运作的?是可以这样做还是我错过了什么?

2 个答案:

答案 0 :(得分:1)

我认为你只需要两个表之间的多对多关系。 UserEvent将告诉您哪些用户有什么事件(反之亦然)...并通过UserEvent加入并添加WHERE user.id = event.initiator_id将允许您访问用户发起的事件,假设它们也属于这些事件。 / p>

答案 1 :(得分:0)

您只需添加一个event_attendees表,其中包含事件ID和用户ID作为两列?或者这不是问题