问题标签 [has-and-belongs-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 投票
2 回答
1160 浏览

ruby-on-rails - habtm 多次使用相同的模型

我正在尝试为出版物建模。一个出版物可以有多个作者和编辑。由于一个人可能是一个出版物的作者和另一个出版物的编辑,因此没有单独的作者和编辑模型:

上面的代码不起作用,因为它使用了相同的连接表。现在我可以指定连接表的名称,但是 API 文档中有一个警告是关于我不理解的警告:

:join_table: 如果基于词法顺序的默认值不是您想要的,则指定连接表的名称。警告:如果您要覆盖任一类的表名,则必须在任何 has_and_belongs_to_many 声明下声明 table_name 方法才能正常工作。

0 投票
1 回答
899 浏览

cakephp - CakePHP:使用 hasOne 和 HABTM 的 saveAll

我设置了两个模型,需要保存在一个表单中。当用户使用“/deliveries/add/”表单时,我需要它来保存新的交付,并保存附加到该交付的新许可证。这是一个 hasOne 关系。

同样在同一个表格中,我需要选择许可证包括哪些产品和产品选项:

我遇到的问题是,CakePHP 似乎没有检测到我的许可证/产品和许可证/产品选项关系是 HABTM,并且表单助手只给了我一个单选下拉列表而不是多选下拉列表。即使我强制它成为表单助手中的倍数,它仍然不会保存数据,也不会正确填充编辑表单(即使它为产品选项提取了正确的标签)。我认为这可能与它与我的主要储蓄模式的关系如此遥远有关?

我已经在下面发布了相关代码。谢谢大家帮我看这个!

交付模型如下所示:

许可证模型如下所示:

Deliveries_controller 看起来像这样:

views/deliveries/add.ctp 如下所示:

0 投票
1 回答
6529 浏览

cakephp - CakePHP hasAndBelongsToMany (HABTM) 删除加入记录

我在用户和位置之间有 HABTM 关系。两个模型都有适当的$hasAndBelongsToMany变量集。

当我管理用户位置时,我想删除用户和位置之间的关联,而不是位置。显然这个位置可能属于其他用户。我希望以下代码仅删除提供 HABTM 关联的连接表记录,但它删除了两条记录。

但是,我是 CakePHP 的新手,所以我确信我遗漏了一些东西。我尝试将级联设置为 false,并使用用户、用户->天气、天气->用户更改模型顺序。没运气。

提前感谢您的帮助。

0 投票
2 回答
1677 浏览

ruby-on-rails - How do I do multiple has_and_belongs_to_many associations between the same two classes?

I have the following setup:

With this setup I can do stuff like Publication.first.authors. But if I want to list all publications in which a person is involved Person.first.publications, an error about a missing join table people_publications it thrown. How could I fix that?

Should I maybe switch to separate models for authors and editors? It would however introduce some redundancy to the database, since a person can be an author of one publication and an editor of another.

0 投票
1 回答
103 浏览

ruby-on-rails - 将模型与多态关联

我试图将联系人与类相关联,但作为两种不同的类型。Current_classes 和 Interested_classes。

我知道我需要启用多态,但我不确定它需要在哪里启用。

这就是我目前所拥有的

然后在我的联系人模型中,我想要这样的东西。

我究竟做错了什么?

0 投票
1 回答
331 浏览

cakephp - CakePHP HABTM:如何找到所有照片 HABTM 多个标签?

我有两个表,照片和标签,带有标准的 photos_tags 链接表。

我的模型显示照片 HABTM 标签,我也可以通过更新链接来更新两者。

我的问题是:假设我现在想查找所有带有“日落”和“海洋”标签的照片-我该怎么做?

我已经尝试按照Nate's Bakery 的帖子进行内部连接,现在我可以找到所有带有“或”标签的照片,但我只想要带有两个标签的照片(例如,“AND”查找,如果这是正确的短语)。目前添加更多标签会给我更多的结果 - 随着更多标签的添加,我想要更少的结果!

或者,如果没有一个好的 Cakey 方式,你会怎么做?多次搜索然后比较数组?不过好像有点浪费。。。

TIA。

0 投票
1 回答
320 浏览

ruby-on-rails - 带有字段的 Rails Habtm

是否有可能在一个有一个字段并且属于许多表?

就像最喜欢的:

感谢 ActiveRecord,我看到时间戳运行良好。但是当我尝试将收藏夹添加到表格中然后我尝试:

然后我收到此错误消息:

ActiveRecord::StatementInvalid: SQLite3::SQLException: messages_users.favorite 不能为 NULL: INSERT INTO "messages_users" ("created_at", "message_id", "updated_at", "user_id") VALUES ('''2010-05-27 06:07 :50.721512''', 1, '''2010-05-27 06:07:50.721512''', 1)

我想使用一个 habtm,我不喜欢 has_many foo 虽然酒吧协会:)

那可能吗?

非常感谢。

0 投票
1 回答
489 浏览

ruby-on-rails - 两次加入相同的 Rails 模型,例如人们通过会员拥有_many 俱乐部和人们通过委员会拥有_many 俱乐部

型号:*人*俱乐部

关系 * 成员 * 委员会

人们应该能够加入俱乐部(会员) 人们应该能够成为俱乐部的董事会成员(委员会)

对于我的应用程序,这些涉及非常不同的功能,所以我不希望使用标志来设置 (is_board_member) 或类似的。

我发现自己想写:

人们 has_many :clubs :through => :membership # :as => :member? :foreign_key => :member_id? has_many :clubs :through => :committee # as (above)

但我不确定如何将它缝合在一起

0 投票
3 回答
265 浏览

cakephp - CakePHP 是否将所有 INT 字段视为连接表的 ID?

我正在尝试保存用户、他们的个人资料和一些标签,以及链接个人资料和标签的连接表。

概要模型称为 Instructor,标签模型称为 Subject。讲师有一个电话号码和一个邮政编码,出于某种原因,CakePHP 认为这些是在我的联接表中创建条目时应该使用的字段。

我的加入表总是出现:

我的模型:

我的模型协会:

我的表单数据如下所示:

我处理表单的函数如下所示:

; } } } } }
0 投票
1 回答
182 浏览

ruby-on-rails - Rails 中相同两个表上的两种不同类型的关联

我有两个模型,用户和主题,我目前正在主题用户表中加入 HABTM 关联。基本上,在用户创建新主题后,其他用户可以选择它以供自己使用。

但是,只有主题的原始创建者才能对其进行编辑。所以,我需要有一些其他类型的关联来处理这种关系,比如主题中的 created_by_id 字段。

通过这种方式,用户模型充当两个不同的角色:他们可以是主题的实现者和/或主题的所有者。实现者关系由themes_users连接表处理;问题是:处理这种二级关联的正确方法是什么?我是否需要让用户多态,然后让 created_by_id 引用成为“所有者”?或者有什么更简单的吗?

非常感谢你的帮助!