我在这上面有点挠头。这是场景。我正在使用Doctrine和YAML模式文件:
我有一个表用户和一个表事件
用户看起来像这样:
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
如您所见,问题是这样的:一个用户(或“发起者”)可以启动许多事件,而一个事件可以属于一个用户(“发起者”)。但是,一个事件也可以有许多用户加入,一个用户可以加入许多事件。
因此,事件和用户最终以两种不同的方式联系在一起。这是如何运作的?有可能这样做吗,还是我错过了什么?
最佳答案
我认为您只需要在两个表之间建立一个多对多关系。 UserEvent会告诉您哪些用户有哪些事件(反之亦然)...并通过UserEvent加入并添加WHERE user.id = event.initiator_id将使您能够访问用户发起的事件,前提是它们也属于这些事件。