【问题标题】:Like a post/comment just once, laravel就像一个帖子/评论一样,laravel
【发布时间】:2016-07-15 10:21:50
【问题描述】:

信息: 我有 2 个表格(users 用于网站用户,new_themes 用于创建的主题/帖子(随便)由用户。

!!!这两个表之间没有关系。(用户登录后可以创建新帖子)

表格:

Users:
1   id 
2   name    
3   email   
4   password

New_themes:
1   id
2   title
3   text
4   upVotes
5   downVotes
6   TagName 

我想做的事:

我创建了用户可以点赞帖子的功能(但他可以无限次点赞),但我希望他们一生中只能点赞一次帖子。

我想不通的是如何制作它的想法/结构/逻辑。我正在考虑创建一个表。表用户和 new_themes 的“枢轴”(Laravel 中的多对多关系)

1 id_user
2 id_theme

他们两个都有一个复合主键,所以它们不会有任何重复的值,所以如果用户想再次投票同一个帖子,他不会因为不能有重复的值。

问题出在这里:

如果这是解决方案,那么当用户喜欢某个主题时,我对如何填充数据透视表表示怀疑并且不知道。如果这不是解决方案,任何建议或想法都会对我完成我的 wep 应用程序的最后一个功能非常有帮助。

非常感谢。

【问题讨论】:

    标签: php mysql database laravel


    【解决方案1】:

    我想不通的是如何制作它的想法/结构/逻辑。我正在考虑创建一个表。表用户和新主题的“枢轴”(Laravel 中的多对多关系)

    这就是要走的路。所以它看起来像这样:

    +---------+----------+
    | user_id | theme_id |
    +---------+----------+
    | 1       |        1 |
    +---------+----------+
    | 12      |        1 |
    +---------+----------+
    | 14354   |        1 |
    +---------+----------+
    

    要“喜欢”一个主题,只需将用户和主题 ID 插入表中即可。其余的只是处理来自数据库的响应 - 为用户多次喜欢某样东西提供反馈等。

    当然你不应该忘记不喜欢的能力 - 所以你需要再次从表中删除......如果你希望用户不喜欢。

    【讨论】:

    • 如果我们考虑` $NewLike = new NewLike(); $NewLike->user_id = '1'; $NewLike->theme_id = '1'; $NewLike->保存(); ` 如果保存不起作用(因为他已经投票,并且有重复),我们如何创建逻辑(代码)?
    • 你在使用 laravel ORM 吗?我不熟悉 laravel,但我很确定有一些东西可以检查数据库中是否已经存在类似的东西(否则你可以通过向数据库发送一个选择来实现它,看看是否存在类似的东西)。所以 save() 方法会返回 false,然后你只需检查 save() 的返回值并为用户准备一条消息。
    • 整个主题非常简单,所以我不确定您是否需要查看一些伪代码。
    • Nice :) 如果它符合您的需求,您能否接受答案(和/或如果它有帮助但有更好的答案,请点赞),这样其他人看到这个问题也有解决方案如果有人有相同的问题,则可以参考 then。您还应该考虑 gauravs 答案中提到的状态标志,如果您添加一个日期字段,您可以跟踪用户何时喜欢帖子.. 如果您愿意,可以进行更多分析。
    【解决方案2】:

    首先,您必须按照您所说的那样创建一个包含以下字段(id、user_id、theme_id、status)的新表,维护该表中用户和主题之间的关系。 当用户喜欢主题插入一条状态为 1 的记录时,如果用户不喜欢主题,首先检查表中的 user_id,如果存在用户 ID,则只需将状态更新为 0,否则插入状态为 1 的新条目。

    【讨论】:

    • 如果用户不再喜欢该帖子,为什么不直接删除它呢?虽然我也喜欢它,但也没有真正需要典型的自动增量 ID。
    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2012-01-20
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多