gpt4 book ai didi

php - 检查用户是为了满足MySQL的要求

转载 作者:行者123 更新时间:2023-11-30 22:02:15 25 4
gpt4 key购买 nike

我正在制作一个带有积分和奖励系统的网站,用户可以在其中收集积分,如果用户积分满足要求,用户将获得奖励并升级。

例如,这是我的用户表

id | username | level | point
1 | nameuser | 0 | 0

奖励:

idaward | awardname | pointreq | badgeid
1 | LEVEL ONE | 10 | 1

依此类推,我有100+用户奖励。

获奖记录

idlog | userid | awardid | badgeid | givendate

我的目的是如何检查用户是否有资格或满足获得奖励和徽章的要求?

流程:

Users have a point -> check if user meets the requirement to level up & get award 
-> Users will leveled up and get a reward (insert the info. to award log)
If users already have it then ignore it.

我正在使用 Laravel,所以如果您可以进行 Laravel 查询,我将不胜感激,但我也接受原始 MySQL 查询。

谢谢

最佳答案

您可以执行以下更新查询:

UPDATE user
SET level = level + 1
WHERE
id = ?
AND EXISTS (
SELECT * FROM award WHERE pointreq <= user.point
AND awardid NOT IN (
SELECT awardid from awardlog WHERE userid = user.id
)
);

如果更新返回 1,那么您需要在 awardlog 表中插入一个条目,您可以使用以下 SELECTINSERT 查询:

SELECT * FROM award WHERE pointreq <= user.point 
AND awardid NOT IN (
SELECT awardid from awardlog WHERE userid = user.id
);

您可以从上述查询中获取 awardid 和 badgeid 并插入到 awardlog 中。

此外,您需要确保所有 3 个查询(UPDATESELECTINSERT)都在单个事务中执行以确保一致性。

关于php - 检查用户是为了满足MySQL的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028076/

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