0

查看由 ACL 组件生成的表格(aros、acos),例如 CakeDC 的收藏夹插件,我看到favorites带有字段的表格Favorite.user_idFavorite.modelFavorite.foreign_key
最后两个组合正在替换旧的Favorite.post_id(假设model具有 value 'Post')。它在某种程度上是一个 HABTM 数据透视表,一侧有一个动态模型名称。
我可以在这里看到一般和有用的想法,但想了解更多关于它的应用。

我的问题:

  • 这种模式有名字吗?
  • 这在代码方面是如何工作的?我可以看到抽象的原理,但是需要什么样的模型代码才能完成这项工作?它是否涉及拼凑的查询,或者这是否允许平滑的单查询实现?例如:我想一次性获取系统中所有标记为收藏的帖子及其相关用户。
  • 这是双向的吗?(从 Post 模型和 User 模型查询)

我想努力实现一种抽象,在其中我放置一种行为来处理这种模式。我确实查看了 CakeDC 代码,但无法弄清楚原理。就我目前的知识而言,这有点太神秘了。因此我的问题在这里。

亲切的问候,
巴特

4

1 回答 1

0

这种模式有名字吗?

http://en.wikipedia.org/wiki/Junction_table又名加入表。

这在代码方面是如何工作的?我可以看到抽象的原理,但是需要什么样的模型代码才能完成这项工作?它是否涉及拼凑的查询,或者这是否允许平滑的单查询实现?例如:我想一次性获取系统中所有标记为收藏的帖子及其相关用户。

它只是一个普通的连接表,仅此而已。在使用 HABTM 关联时,您可以简单地依赖 CakePHP 正在构建的内容,或者通过使用连接来优化您的查询。请参阅http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tables

该“模式”中不需要模型字段,但允许您只有一个可用于许多不同表/模型的连接表。例如,我们不使用 tags_posts 和 tags_users 关联的标签、用户和帖子,而是简单地使用同一个表并按模型字段进行过滤。

这是双向的吗?(从 Post 模型和 User 模型查询)

是的,如果您在两个模型中都设置了 HABTM 关联。

感谢您使用我们的插件。;)

于 2012-10-18T22:42:33.573 回答