我正在使用cakePHP 1.26
我将在localhost上建立一个非常简单的论坛
以下是数据库的概念设计:
表:
用户{user_id,姓名,日期}
主题{post_id,标题,内容,日期}
回复{post_id,content,date}
引用{quote_post_id,post_type,post_id}
用户可能有很多主题
用户可能有很多回复
主题可能有很多报价
答复可能有很多报价
(主题和回复都可以引用一次或多次)
请提供帮助和建议。
答案 0 :(得分:3)
用户{id,name,logname,password}
主题{id,title,content,date,user_id}
回复{id,content,date,topic_id,user_id}
我不确定Quote
...我不知道为什么这不适合Reply
。
答案 1 :(得分:1)
您肯定想要引入一个名为id的字段,因为当字段user_id
是表users
中的id字段时,将字段命名为autor_id
有点多余。除了cakephp之外,还将某些字段视为 automagic 。 Automagic 意味着cakephp可以在没有您的情况下识别外键 - 开发人员必须明确指定它们。但是为了让cakephp帮助你实现 automagic ,你必须坚持一些约定。曾经学过的这些约定之一非常方便,一旦你将它们命名为YOUR_MODEL_NAME_IN_SINGULAR_HERE_id,就会自动检测到外键。
例如:作者 hasMany 帖子,帖子 belongsTo 是作者(*)。在这种情况下,您可以将外键posts
存储在表cake bake
中。稍后当您使用{{1}}脚本或脚手架功能时,您将了解会议的力量!
我在你的帖子中注意到的另一件事是,你可能会错过在cakephp关系建立双向。这意味着您不仅可以使用单个 hasMany 定义,而且可以使用 belongsTo 定义同时使用另一个方向。
因此,我建议你改写你的陈述,以便以后实现更酷。
答案 2 :(得分:1)
我将尝试以不同的方向回答失去的答案:
用户{id,name,logname,password}
发布{id,title,content,date,parent_post_id,user_id}
引用{post_id,quoted_post_id}
在此模型中,如果parent_post_id为NULL,则帖子是主题。回复将parent_post_id设置为其主题的ID。 (或者您可以允许回复的树结构。)
警告:我的经验是普通的SQL。我不知道cakephp中的工作原理如何,所以其他人将不得不帮助你。