我有一张表格,其中包含用户可以注册的时间段。在管理端,管理员用户可以选择将两个时隙“链接”在一起,这基本上是对最终用户说,“如果您注册其中一个时隙,则必须注册链接的所有其他时隙到它。这些链接存储在另一个表中,该表有两列,一列是需要链接的时间段的 ID,另一列是被链接到的时间段的 ID。
我怎样才能做到在将一个时隙与另一个时隙链接时,两者都取决于所选择的另一个。这也需要对其他链接的时隙进行递归,如下例所示:
Admin says:
#1 is linked to #2
#3 is linked to #2
Therefore:
#1 is linked to #2
#2 is linked to #1
#3 is linked to #2
#2 is linked to #3
#3 is linked to #1
#1 is linked to #3
实现此目标的最佳方法是什么?现在我正在尝试将该信息放入链接表中,但如果有另一种方法可以使用更多的 PHP 和更少的 SQL 来完成,那也可以。我会提供代码示例,但我认为这不会有帮助。
编辑:概念性答案很好。除非出于演示目的,否则我不需要为我编写代码。
最佳答案
一种方法可能是一个包含两列的表格,其形式为:Node_Id 和 Link_Id。
在这种情况下,Node_Id 是时间段 ID。对于上面的示例,行将是:
1 1
2 1
3 1
其中第一列1、2、3为时隙,第二列1为链路。
假设我们用链接 2、3 和 4 添加时隙 4、5、6、7 和 8。
4 2
5 3
6 2
7 4
8 2
这转化为:
Pick 4, must also pick 6 and 8 (all are link 2).
Pick 5, you're done (only member of link 3).
Pick 6, must also pick 4 and 8 (all are link 2).
Pick 7, you're done (only member of link 4).
Pick 8, must also pick 4 and 6 (all are link 2).
关于php - 递归链接记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956241/