如何在发布应用程序时有多个回复?

时间:2009-06-08 19:40:07

标签: php database-design mysqli

这是一个简单的问题。

使用PHP和MySQL,我正在尝试构建一个错误报告应用程序。

目前,用户可以发布错误,并向技术人员/管理员描绘错误列表。

如何制作,以便许多技术人员或管理员可以回复报告(线程?)

如同mysql表格布局和PHP编码一样吗?

当前MySQL表的布局为:

id          (Bug ID)
by          (person reporting it)
title       (Report Title)
content     (Contents of Report)
datetime    (Date/Time of report)
application (Application/page where problems happens)
priority    (Priority)
assigned    (Assigned To)
status      (Status of report/bug)

所以还没有响应列,但是如何使用PHP和MySQLi实现多个帖子/响应?

由于

3 个答案:

答案 0 :(得分:5)

这将是多对一的关系。你可以有:

回复表

id (response id)
bugid (bug id)
columns related to the response

回复表

id (response id)
columns related to the response

bugresponse table

responseid (response id)
bugid (bug id)
columns related to the bug-response relationship

第二种设计也可以处理多对多关系(在这种情况下可能不太必要),并且还可以根据您的要求提供其他一些好处。

答案 1 :(得分:2)

您使用回复创建另一个表。例如布局

id (Response Id), 
responseTo (id of the Bug this is a response to),
by (person responding),
content (Contents of Response)

responeTo是关键领域。然后,当您想要查看对错误的所有响应时,您只需从响应表中选择responseTo = currentBugId。

答案 2 :(得分:1)

您通常要做的是为响应创建一个单独的表。在该表中,您有一个“指向”第一个表的字段。它看起来像这样:

TABLE responses
id         (Unique id)
bug_id     ("Pointer" to which bug this response "belongs to")
body       (Contents of response)

通过这种方式,您可以获得许多响应,这些响应都指向一个错误,因此您实际上创建了“所有权”或“关系”。如果我们假装我们在错误表中,向外看,就习惯于称之为“一对多”之类的关系。 (我们在响应表中的“多对一”,回顾bug表。)

然后,在PHP中,当您想要检索属于错误的所有响应时,您可以执行以下操作:(伪代码)

$bug = SELECT * FROM bugs WHERE id = $some_id
$resps = SELECT * FROM responses WHERE bug_id = $bug['id'] ORDER BY created_at

瞧!现在您有了错误及其所有响应,按创建日期排序。当您插入新的回复时,您需要将bug_id设置为适当的值。

干杯!