问题标签 [many-to-many]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3042 浏览

database - Zend 多对多关系

我想从 3 个表中检索所有数据

用户、属性和 users_properties。

所以我决定使用 manytomanyRowset。但令我惊讶的是,我从 properties 和 users_properties 表中获取数据,但从 users 表中没有数据。这是为什么?我需要用户表中的一些列有没有办法告诉 manytomanyrowset 函数我也需要当前表中的数据?

这是我的功能

提前感谢

0 投票
2 回答
852 浏览

nhibernate - 多对多级联删除

我已经定义了两个类之间的多对多关系。事件和人员(在单独的数据库表 person_event 中定义)。现在,假设我想删除一个人,因此它与事件的所有相关关联也必须从 person_event 表中删除。换句话说,我想要级联 ON DELETE。

让我们考虑一个场景:

  • “事件”表包含三个由 id=1、2、3 标识的事件。
  • “人”表包含两个由 id=4, 5 标识的人。
  • 包含 1-4、2-4、3-5 等关联的“person_event”表

现在,假设我使用 Hibernate.delete() 删除事件 1,那么它不仅删除了 event1 和关联 person_event1-4,还删除了 person4!

问题是 person4 被另一个表引用并且它抛出一个外部约束异常......我如何配置 NHibernate 来删除事件和关联 person_event?

0 投票
1 回答
462 浏览

python - 自定义管理器和“通过”

我在我的 django 应用程序中有一个多对多的关系,我非常频繁地使用管理器的“添加”方法(即 album.photos.add() )。

我发现自己现在需要存储一些关于多对多关系的数据,但我不想丢失 add 方法。我可以为“通过”模型上的所有附加字段设置默认值并以某种方式重新实现 add 方法吗?

我对自定义管理器了解不多,但我怀疑这可能是正确的地方。

更新:

一直在阅读自定义管理器。当我将“通过”参数添加到我的多对多字段时,也许我可以阻止添加/删除/等被禁用?

有谁知道这是怎么做到的吗?

0 投票
2 回答
19606 浏览

sql - SQL:多对多表和查询

首先 - 为模糊的标题道歉,我找不到更好的。

我有以下结构的表(简化):

此表表示多对多关系。

我有兴趣查找与特定 DeptID 组相关的所有 EmpID,例如,我想要与 DeptID 1、2 和 3 相关的所有 EmpID。请注意,它是 AND 关系而不是 OR 关系。就我而言, EmpID 可能与除 1、2 和 3 之外的其他 DeptID 有关,因为它是一个有效的答案。

我感兴趣的 DeptID 数量的变化(即我可能想要与 DeptID 3 和 5 相关的 EmpID,或者我可能想要与 DepID 2、3、4、5、6、7 相关的 EmpID)。

当我尝试解决这个问题时,我发现自己要么为每个 DepID 创建一个 JOIN,要么为每个 DeptID 创建一个子查询。这意味着我必须根据我正在测试的 DeptID 数量生成一个新查询。我显然更喜欢使用一个参数或一组参数进行静态查询。

我正在使用 SQL Server 和 MySQL(并行开发我的代码的两个版本)。

有任何想法吗?

0 投票
1 回答
4178 浏览

c# - 如何通过实体键添加/删除与实体框架的多对多关系?

我试过:

当尝试使用 Remove() 而不调用 attach 之前没有抛出异常但没有删除关系。

0 投票
3 回答
2311 浏览

c# - NHibernate 多对多映射

我在使用 NHibernate 进行多对多映射时遇到问题。基本上我的对象模型中有 2 个类(场景和技能)映射到数据库中的三个表(场景、技能和场景技能)。ScenarioSkills 表只保存 SKill 和 Scenario 表的 ID(SkillID、ScenarioID)。

在对象模型中,Scenario 有几个通用属性和一个从 ScenarioSkills 表中获得的相关技能列表 (IList)。Skill 对象没有关联的 IList of Scenarios。

从 Scenario 和 Skill 到 ScenarioSkill 的映射是多对多的关系:

场景 * --- * 场景技能 * --- * 技能

我已将列表绘制为袋子,因为我相信这是我所阅读的最佳选择。映射如下:

在场景类中

在技​​能类中

一切正常,除了当我尝试删除一项技能时,它不能这样做,因为 ScenarioSkill 表的 SkillID 列上有一个引用约束。谁能帮我?

我在 C# asp.net 3.5 Web 应用程序解决方案上使用 NHibernate 2。

0 投票
1 回答
1672 浏览

linq-to-sql - 如何在linqtosql中具有多对多关系的表中插入行

我是 linqtosql 的新手。我有一个数据库模式,

一名员工可以属于多个团队,而团队可以属于多个员工。

所以实际上我有一个,

员工表:EmpID(PK)、EmpName 等。

EmployeesTeam 表:EmpID(FK),TeamID(FK)(这两个组成复合PK)

团队表:TeamID(PK)、TeamName等

我向 Employee 和 Team 表添加了行,但我不知道如何向E​​mployeesTeam 表添加行。

0 投票
2 回答
2870 浏览

ruby-on-rails - 使用 Rails 的多对多关系时出现“NameError: uninitialized constant”

我有以下型号:

但是,我在使用这种关系时遇到了问题。Account.first.account_holders 工作得很好,但 Account.first.people 返回:

有任何想法吗?

0 投票
12 回答
27355 浏览

c# - 如何在代码中建模多对多关系?

假设我在数据库中有 2 个表。例如:Dog & Boss 这是多对多的关系,因为老板可以拥有超过 1 只狗,而狗可以拥有超过 1 个主人。我是 Bobby 的所有者,但我的妻子也是。

但是多对多是不允许的,所以有一个helpertable:DogsPerBoss

如何在代码中建模?

Class Boss 可以拥有 Dogs 的集合。Dog 类可以有一个 Boss 集合。--> 至少,我是这么认为的。也许有更好的解决方案?

辅助表中的额外数据怎么样?那应该是de Boss级还是Dog级?eg:昵称(我称狗为“好孩子”,我妻子称他为“doggie”)

我希望我的问题有点清楚?关于实现这一目标的最佳方法是否有任何最佳实践?你能给我一些参考吗?

ORM(如 NHibernate)不是一个选项。

0 投票
3 回答
154 浏览

c# - 如何在多对多关系中搜索值数组?

我的 LINQ to Entity 模型有很多问题。我是 C# 和 LINQ 的新手,所以请耐心等待。

我有一个包含图片和标签的模型,其中每张图片可以有很多标签,每个标签可以在很多图片上。在数据库中有一个正常的关系表,但在对象模型中,我将其视为 picture.tags (作为列表)和 tag.pictures (作为列表)。一个搜索查询包含多个标签,搜索的结果是包含所有带有我搜索过的所有标签(但可能更多)的图片。要搜索的标签数量不固定。

怎样才能最好地做到这一点?