如何正确定义 SuiteCRM 中的关系
How to properly define relationships in SuiteCRM
在模块生成器中,假设我想为我的宠物美容院添加自定义模块宠物和访问。
如果我希望能够从 Pets 模块中的逻辑挂钩访问 Visits,并从 Visits 访问 Pets,并且我还想将每个显示为另一个面板,我应该:
- 定义从访问 (L) 到宠物 (R) 的多对一关系?
- 定义从宠物 (L) 到访问 (R) 的一对多关系?
- 两者都有?
我不知道Sugar 的答案是否相同;我认为它可能有不同的 "module builder" 类型。
就 Sugar 而言,如果您希望在两个模块中都有一个面板,则需要 many-to-many 关系。
但是,如果您想将关系限制为每次访问最多一只宠物,则 one-to-many 关系适合将宠物作为主要模块 (L),将访问作为相关模块 (R)。
请注意,在 Visits 中,相关 Pet 可能不会显示为面板,而是显示为此类关系的相关字段(至少在 EditView 中,在 Record View 中,它可能仍显示为 SuiteCRM 中的面板,因为它使用旧的 UI 的糖)。
无论哪种方式,关系总是可以从双方访问,所以你不需要第二个关系)
PS: 如果你想要一个 one-to-many 关系 但是 一个面板,即使在只有另一个模块的一个记录可以链接到的一侧most at any time,那么您可以通过首先创建 many-to-many 关系并调整关系的元数据以在代码中将 true_relationship_type
设为 one-to-many
来实现此目的。
在模块生成器中,假设我想为我的宠物美容院添加自定义模块宠物和访问。
如果我希望能够从 Pets 模块中的逻辑挂钩访问 Visits,并从 Visits 访问 Pets,并且我还想将每个显示为另一个面板,我应该:
- 定义从访问 (L) 到宠物 (R) 的多对一关系?
- 定义从宠物 (L) 到访问 (R) 的一对多关系?
- 两者都有?
我不知道Sugar 的答案是否相同;我认为它可能有不同的 "module builder" 类型。
就 Sugar 而言,如果您希望在两个模块中都有一个面板,则需要 many-to-many 关系。
但是,如果您想将关系限制为每次访问最多一只宠物,则 one-to-many 关系适合将宠物作为主要模块 (L),将访问作为相关模块 (R)。 请注意,在 Visits 中,相关 Pet 可能不会显示为面板,而是显示为此类关系的相关字段(至少在 EditView 中,在 Record View 中,它可能仍显示为 SuiteCRM 中的面板,因为它使用旧的 UI 的糖)。
无论哪种方式,关系总是可以从双方访问,所以你不需要第二个关系)
PS: 如果你想要一个 one-to-many 关系 但是 一个面板,即使在只有另一个模块的一个记录可以链接到的一侧most at any time,那么您可以通过首先创建 many-to-many 关系并调整关系的元数据以在代码中将 true_relationship_type
设为 one-to-many
来实现此目的。