gpt4 book ai didi

zend-framework - 如果用户对某事进行了投票,您如何存储和显示?

转载 作者:行者123 更新时间:2023-12-04 08:53:26 25 4
gpt4 key购买 nike

我在一个投票网站上工作,我想知道我应该如何处理投票。

例如,在 SO 上,当您为一个问题(或答案)投票时,您的投票会被存储,每次我返回页面时,我都可以看到我已经为这个问题投票了,因为向上/向下按钮是彩色的。

你是怎样做的?我的意思是我有几个想法,但我想知道它是否不会对数据库造成沉重的负担。

这是我的想法:

  • 编写一个助手来检查每个问题是否已投票

    这意味着查询的数量将取决于页面上显示的项目数量(通常约为 20)
  • 在我的项目上循环获取 id 并为每个页面编写一个查询,如果投票已投或 NULL 将返回

    看起来不错,因为只有一个查询与页面上有多少项目无关,但可能会破坏某些 MVC/域模型设计,不知道。
  • 当用户登录(或为其创建匿名用户的 guest )检索所有投票时,将它们存储在 session 中,如果有新投票,只需将其添加到 session 中。

    看起来不错,因为除了第一个查询之外根本不需要查询,但是,这个查询以及根据投出的票数(每个用户可能是一堆)可以增加每个用户的 session 大小并可能进行身份验证减缓。

  • 你好吗?还有其他想法吗?

    最佳答案

    例如:假设您有一个表来存储投票和投票的用户。

    假设您在 user_votes 中保留选票当使用类似于下面的表格结构进行投票时。

    id of type int autoincrement
    user_id type int, Foreign key representing users table
    question_id type of int, Foreign key representing questions table

    现在,当用户登录时,当您对问题进行提取时,请使用 user_votes 中的 user_id 进行左连接。 table 。

    就像是
    SELECT q.id, q.question, uv.id 
    FROM questions AS q
    LEFT JOIN user_votes AS uv ON
    uv.question_id = q.id AND
    uv.user_id = <logged_in_user_id>
    WHERE <Your criteria>

    从 View 中,您可以检查 id 是否存在。如果是这样标记投票,否则不会。

    您可能需要更改问题表的所有字段。我假设您将问题存储在 questions 中表和用户 user表某某。都有主键 id .

    谢谢

    关于zend-framework - 如果用户对某事进行了投票,您如何存储和显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050954/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com