我对标记云做了一些研究,最终选择了一个类似于本页中Wordpress的模式:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html
目前,我创建的表是:Posts
、PostsTagMaps
、PostsTags
1) 即使我不打算使用控制器,我是否也需要为PostsTagMaps
创建一个表?
2) 一个Post
有许多PostTagMaps
。我不确定我应该在哪里定义这种关系。我认为它应该是Post
模型,但之后我必须将PostsTags
表加入PostTagsMaps
,然后将其加入Posts
,所以我想征求一些建议。
简单的解决方案是遵循Cake约定(这看起来与您链接的解决方案非常相似)。你会有三张桌子:
posts
、tags
、posts_tags
然后是您的Post
型号HABTM Tag
型号。Cake将自动使用联接表来保存和检索信息。有关设置架构的详细信息,请参阅本书。
Cake足够灵活,你可以随心所欲,但如果它是一种基本的posts-tags关系,那么约定方法就是最好的选择。
如果您想使用像PostsTagMaps
这样的自定义模型/表,请在HABTM关系定义中使用"with"键。"with"键Cake使用特定的模型(因此使用特定的表),而不是自动生成的版本。在这种情况下,标签模型听起来像是PostsTags
,HABTM表是PostsTagMaps
,因此Post
HABTM PostsTag
上的"with"键将是PostsTagMap
。