【发布时间】:2012-08-22 09:27:12
【问题描述】:
我只是想知道是否可以在同一个类上有多个 many_many 关系。例如,我有一个表 A、表 B 和表 C。我想要表 A 和表 B 之间的 many_many 关系以及表 A 和表 C 之间的另一个 many_many 关系。我已经尝试过了,但它没有将 ID 添加到它创建的表。我做了一些搜索,发现了这个http://www.balbuss.com/multiple-many-many-s-of-the-same-class/,现在不确定它是否可能。
非常感谢任何帮助。
我曾想过使用 onAfterWrite 来填充链接表,但我需要这样做吗?
class Table B extends DateObject {
static $belongs_many_many = array (
'TableAs' => 'TableA'
);
}
class Table C extends DateObject {
static $belongs_many_many = array (
'TableAs' => 'TableA'
);
}
class Table A extends Page {
static $many_many = array (
'TableB' => 'TableB',
'TableC' => 'TableC'
);
}
【问题讨论】:
-
不,onAfterWrite 听起来不是解决此问题的正确方法。你能添加你当前的代码吗?
-
感谢您对此@Zauberfisch 的回复。我在上面添加了与 many_many 关系相关的代码。
-
这种关系当然是可能的,我自己有很多情况,我的关系看起来和你的一样。所以你是说关系没救了?您还可以发布如何保存关系的代码吗?你用什么来管理关系?
-
啊,这就是我困惑的地方。我对 SilverStripe 的这个领域相当陌生,但这不应该类似于 has_one 关系吗?例如,我假设(可能是天真地)一旦我创建了一个新的表 B,ID 就会自动添加到表中。不是这样吗?
-
好吧,是的,关系是自动保存的,但前提是您使用正确的工具。例如,ss2 中的 ManyManyComplexTableField 或 ManyManyDataObjectManager 或 ss3 中的 GridField 将保存关系
标签: silverstripe