【问题标题】:How to find and update the next record in a linking table如何查找和更新链接表中的下一条记录
【发布时间】:2010-05-22 15:01:35
【问题描述】:

我正在开发一个分类广告系统。

人们可以将照片添加到分类中,但我在显示分类列表时只显示一张。

为此,我有一个分类信息和照片之间的链接表,其中有一个“is_main”布尔字段。

当有人删除他们的一张机密照片时,我想:

1) See if there is more than that photo tied to the classified.
2) If there is, update the next photo and set that "is_main" field to TRUE.

只是想找出最有效的方法来做到这一点。

【问题讨论】:

    标签: mysql codeigniter


    【解决方案1】:

    在我看来,您不应该在照片表中设置“is_main”标志,而是将该照片的 ID 添加到分类记录中。找到用于显示目的的“主要”照片要快得多(我想这种情况经常发生)。

    当您从照片表中删除照片时,您需要查看它是否是分类表中引用的照片。如果是,那么您可以选择与之关联的下一张照片(例如,通过使用 min(PhotoID) 或 min(Created),其中 created 是将照片添加到照片表的日期时间。

    结论:照片的 is_main 属性不是照片表上的标志,而是分类表中的 FK。

    【讨论】:

    • 感谢您的回答。我会看看这个变化。我怀疑它会改变您对此的看法,但要清楚的是,is_main 标志设置在链接表上,而不是照片表上。照片表也用于网站上的其他内容。
    • @someoneinomaha:有关“当前”照片的信息“属于”分类,而不是照片或链接。您的解决方案需要更多空间和更多时间来显示照片,因为您将加入 3 个表:分类 链接表 照片 ...但我的建议允许直接链接。
    【解决方案2】:

    在我看来,我发现在数据库中存储图像名称有点多余。
    我宁愿做一个以分类id命名的目录,并在其中存储相应的图像。

    所以,如果用户删除一张照片,他只是删除了一张照片。

    为了保留一张照片作为主要照片,我将其命名为 main.jpg。
    如果要删除它,我会阅读目录内容并重命名首先出现的任何照片。
    就是这样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多